我有一个用libtool构建的大型c ++项目。问题是eclipse不会运行libtool生成的脚本,而且我得到一个“程序不是可识别的可执行文件”。错误信息。我该如何使用eclipse调试器?我目前正在使用kdevelop3作为编辑器并使用洞察力进行调试......这太可怕了。
我也许可以在项目目录的./libs中运行实际的可执行文件,但是我必须手动设置LD_LIBRARY_PATH和类似的东西......必须有更好的方法来这样做。
任何帮助将不胜感激!
答案 0 :(得分:2)
Eclipse中仍然不支持运行脚本而不是可执行文件,请参阅this bug。在引入该功能之前,您无法在Eclipse下调试启用libtool的项目,除非您保留类似
的内容 path/to/configure --disable-shared
单独配置,因此仅依靠静态链接进行调试。
要做到这一点,你
从顶部菜单打开Project|Properties
从窗口左侧菜单中选择Autotools|Configure Settings
(可选)使用专用的C/C++ Build|Builder Settings|Build location
在configure|Advanced
下,使用--disable-shared
答案 1 :(得分:2)
您可以通过运行实际的可执行文件而不是libtool脚本来解决它。可执行文件通常位于.libs/
中。因此,在主选项卡上的调试配置中,将C/C++ Application
的值设置为.libs/my_application
。然后,您需要在调试配置中更新LD_LIBRARY_PATH
。
转到调试配置的环境选项卡,并创建一个名为LD_LIBRARY_PATH
的新环境变量。您将要将.libs
目录附加到路径中。因此,值应如下所示:${project_loc}/.libs:$LD_LIBRARY_PATH
假设您的.libs
文件夹位于项目目录中。
答案 2 :(得分:1)
你需要说服eclipse像这样启动gdb:
$ libtool --mode=execute gdb <your-program>
请参阅https://www.gnu.org/s/libtool/manual/html_node/Debugging-executables.html
答案 3 :(得分:1)
我认为可以编写一个小包装程序来插入一个'sh libtool --mode execute'的exec来运行gdb。称之为'gdb-libtool'并调用它而不是gdb。
我正在Windows和Linux下开发,所以这是我自己需要的东西。
有一些棘手的问题,比如在libtool和gdb调用中获取路径..关闭以获取swat。
干杯,杰里。
答案 4 :(得分:1)
对于第一点,您可以通过在-no-install
中将LDFLAGS
添加到Makefile.am
来禁用中间libtool脚本,或者只需运行make install
并从已安装的二进制文件进行调试即可。
对于第二点,您必须在启动eclipse之前设置并导出LD_LIBRARY_PATH
。