Debugging 如何调试包装在libtool脚本中的程序?
我有一个项目涉及Debugging 如何调试包装在libtool脚本中的程序?,debugging,gdb,libtool,Debugging,Gdb,Libtool,我有一个项目涉及 共享库ie:mylib.so (测试)使用这些共享库的程序,即:test\u mylib 当我尝试在test\u mylib上运行gdb时,它会打印: "test_mylib": not in executable format: File format not recognized 当我直接使用真实程序(.libs/test_mylib)时,它仍然抱怨: .libs/test_mylib: can't load library 'libhello.so.0' 如何运行
- 共享库ie:
mylib.so
- (测试)使用这些共享库的程序,即:
test\u mylib
test\u mylib
上运行gdb
时,它会打印:
"test_mylib": not in executable format: File format not recognized
当我直接使用真实程序(.libs/test_mylib
)时,它仍然抱怨:
.libs/test_mylib: can't load library 'libhello.so.0'
如何运行gdb来调试我的程序?这是我几天前遇到的问题,目前还没有通用的答案。只有特殊情况。以下是我在本页上找到的答案: 在安装程序之前,系统不知道在哪里查找共享对象。它们通常位于源文件夹的
.libs
子目录中
Libtool生成一个方便的脚本,允许在实际安装完成之前进行调试(谁想在安装错误软件之前安装,在安装之后调试?)
幸运的是,生成的脚本为此提供了帮助:
libtool --mode=execute gdb test_mylib
libtool文档推荐的解决方案是在开发过程中使用静态链接,如我在以下站点所述: 为此,请使用
/configure
脚本的选项
例如:
./configure --enable-debug --disable-shared
现在生成的可执行文件是直接可执行的二进制文件,而不是libtool脚本
这还有一个额外的好处,就是大约将构建时间减少了一半。没有禁用共享解决方案的其他后台信息:在OS X机器上,我在--mode=execute中得到了
错误:libtool:未知选项字符“--”(我的解决方法是安装到前缀,但从长远来看,禁用下面提到的共享可能更简单)