Saucy:Boost 共享库不包含任何符号

Saucy:Boost 共享库不包含任何符号

我需要链接一些 Boost 的共享库 ( .so) 文件。我已通过运行安装了 boost

sudo apt-get install libboost-all-dev

头文件和静态库已正确安装。共享库也已安装,但它们不包含任何符号。

$ nm /usr/lib/x86_64-linux-gnu/libboost_filesystem.so
nm: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so: no symbols

这怎么可能?我该如何解决?我知道这是一个模糊的问题,但我尝试过apt-get clean完全删除和清除所有 boost debian 软件包并重新安装,但总是得到相同的结果。从源代码编译 Boost 并安装单独的版本并不理想。

答案1

从 Ubuntu 存储库安装的大多数共享库都不包含符号。软件包通常使用调试符号构建,然后将其剥离并放入可单独安装的软件包中,以供gdb其他调试器使用。

如果你想查看共享库中的符号动态符号表,它们是可以链接的公共符号,使用nm -D而不是仅仅nm

答案2

我在其他库 (libcudart.so) 中也遇到了同样的问题。我使用静态“.a”库解决了这个问题。

我做了什么:

$ find /usr/local/cuda-7.0 -type f -name libcudart\*
directory/libcuda_static.a
$ compiler -Ldirectory -lcudart_static

我希望这可以帮助别人

相关内容