1

我必须使用共享库的调试版本(特别是通过安装在 Ubuntu 中的 libpcap apt-get install libpcap0.8-dbg)...我构建我的可执行文件并链接它并且所有工作(验证ldd)...但是当我运行可执行文件时我得到一个段错误...动态链接器无法加载库。使用objdump我看到它Dynamic section是空的:

$objdump -p libpcap.so.1.1.1
...
Dynamic section:

$

我认为在 ELF 共享对象中,某些字段Dynamic section是强制性的……那么,为什么这部分是空的?也许有一种不同的方法可以正确加载它?

4

2 回答 2

2

老实说,我不使用 Ubuntu,但 AFAIK 调试包不包含完整版本的库或二进制文件,只是从中剥离了调试信息。这些只是由 eu-strip 或类似工具切出的部分。你不应该链接他们。事实上,根本不需要重新链接您的应用程序。如果工具本身无法做到这一点,您应该只指示 gdb、valgrind 或其他调试信息使用者在实际调试之前阅读它们,仅此而已。

于 2012-11-25T17:39:28.803 回答
0

你可以尝试运行LD_LIBRARY_PATH=/usr/lib/debug/

于 2012-11-16T17:53:18.107 回答