我必须使用共享库的调试版本(特别是通过 apt-get install libpcap0.8-dbg
在 Ubuntu 中安装的 libpcap)...我构建我的可执行文件并链接到它并且所有工作(使用 ldd
验证)......但是当我运行可执行文件时我得到一个段错误......动态链接器无法加载库。使用 objdump
我看到 Dynamic section
是空的:
$objdump -p libpcap.so.1.1.1
...
Dynamic section:
$
我认为在 ELF 共享对象中,Dynamic section
的一些字段是强制性的……那么,为什么这个部分是空的?也许有不同的方法可以正确加载它?
最佳答案
老实说我不使用 Ubuntu,但 AFAIK 调试包不包含完整版本的库或二进制文件,只是从中删除了调试信息。这些只是用 eu-strip 或类似工具切出的部分。你不应该链接到他们。事实上,根本不需要重新链接您的应用程序。如果工具本身无法做到这一点,您应该只指示 gdb、valgrind 或其他调试信息使用者在实际调试之前阅读它们,仅此而已。
关于linux - 如何使用共享对象的调试版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419906/