yad*_*taf 11 debugging gdb libtool
我有一个涉及的项目
mylib.sotest_mylib当我尝试继续运行gdb时test_mylib,它会打印:
"test_mylib": not in executable format: File format not recognized
Run Code Online (Sandbox Code Playgroud)
当我.libs/test_mylib直接使用真正的程序()时,它仍然抱怨:
.libs/test_mylib: can't load library 'libhello.so.0'
Run Code Online (Sandbox Code Playgroud)
如何运行gdb来调试我的程序?
yad*_*taf 15
这是我几天前遇到的问题,而且还没有关于SO的通用答案.只有特殊情况.以下是我在此页面上找到的答案:http://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html
在安装程序之前,系统不知道在哪里查找共享对象.它们通常位于.libs其源文件夹的子目录中.
Libtool程序生成方便脚本允许调试实际安装完成之前(谁想要安装错误的软件之前,并调试后?)
幸运的是,生成的脚本为此提供了一个帮助:
libtool --mode=execute gdb test_mylib
Run Code Online (Sandbox Code Playgroud)
libtool文档建议的解决方案是在开发过程中使用静态链接,正如我在以下文章中所描述的那样:使用静态链接到本地组件来构建libtool应用程序
为此,请使用脚本--disable-shared选项./configure。
例如:
./configure --enable-debug --disable-shared
Run Code Online (Sandbox Code Playgroud)
现在,生成的可执行文件是直接可执行的二进制文件,而不是libtool脚本。
这具有将构建时间大致减半的额外好处。