参阅以下简单的C ++程序hw.cpp
:int main() { }
在g++ -o hw hw.cpp -O0 -g
Linux上编译时,运行ldd ./hw
会提供:
linux-gate.so.1 => (0x003e5000)
libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0x007c5000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x006a4000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x00a40000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00a93000)
/lib/ld-linux.so.2 (0x00a0f000)
现在我似乎还有调试库/usr/lib/debug/lib/tls/i686/cmov/
,我想是系统库的相应调试版本。
发布于 2018-04-19 14:26:37
在许多Linux安装中,调试库不包含真正的代码; 它们只包含调试信息。两者是分开的,这样如果你不需要它们,并且你缺少磁盘空间,你可以选择不安装它们,但是调试库本身并不好。
发布于 2018-04-19 14:54:37
你的程序被链接到调试库。
只有'ldd ./hw'在标准位置找到libstdc ++。为此,需要更改LD_LIBRARY_PATH以获取调试共享库以加载并ldd以正确查找它们
https://stackoverflow.com/questions/-100008194
复制相似问题