6

我有一个用 libtool 构建的大型 c++ 项目。问题是 eclipse 不会运行 libtool 生成的脚本,并且我得到“程序不是可识别的可执行文件”。错误信息。如何使用 Eclipse 调试器?我目前正在使用 kdevelop3 作为编辑器并使用洞察力进行调试.. 这太可怕了。

我也许可以在项目目录的 ./libs 中运行实际的可执行文件,但随后我将不得不手动设置 LD_LIBRARY_PATH 和类似的东西......必须有更好的方法来做到这一点。

任何帮助,将不胜感激!

4

5 回答 5

2

Eclipse 仍然不支持运行脚本而不是可执行文件,请参阅此错误。在引入该功能之前,您无法在 Eclipse 下调试启用 libtool 的项目,除非您保留类似

    path/to/configure --disable-shared

单独的配置,因此仅出于调试目的而依赖静态链接。

为此,您

  1. Project|Properties从顶部菜单打开

  2. Autotools|Configure Settings从窗口的左侧菜单中选择

  3. (可选)使用专用的创建新的构建配置C/C++ Build|Builder Settings|Build location

  4. 在 下configure|Advanced,填写“其他命令行选项”--disable-shared

于 2012-04-21T15:27:39.620 回答
2

您可以通过运行实际的可执行文件而不是 libtool 脚本来解决它。可执行文件通常位于.libs/. 因此,在主选项卡上的调试配置中,将 的值设置C/C++ Application.libs/my_application. 然后,您需要LD_LIBRARY_PATH在调试配置中进行更新。

转到调试配置的环境选项卡并创建一个名为LD_LIBRARY_PATH. 您需要将.libs目录附加到路径中。所以值应该是这样的:${project_loc}/.libs:$LD_LIBRARY_PATH假设你的.libs文件夹就在项目目录中。

于 2017-02-09T20:57:15.813 回答
1

对于第一点,您可以通过在您的OR中添加-no-install来禁用中间 libtool 脚本,您可以从已安装的二进制文件中运行和调试。LDFLAGSMakefile.ammake install

对于第二点,您必须在启动 eclipseLD_LIBRARY_PATH 之前设置和导出您的。

于 2014-02-14T13:48:13.660 回答
1

您需要说服 eclipse 像这样启动 gdb:

$ libtool --mode=execute gdb <your-program>

https://www.gnu.org/s/libtool/manual/html_node/Debugging-executables.html

于 2011-12-09T14:08:44.933 回答
1

我认为可以编写一个小包装程序来插入“sh libtool --mode execute”的执行程序来运行gdb。称它为“gdb-libtool”并调用它而不是 gdb。

我正在 Windows 和 Linux 下开发,所以这是我自己需要的东西。

有一些棘手的地方,比如在 libtool 和 gdb 调用中获取正确的路径..关闭以采取行动。

干杯,杰瑞。

于 2012-01-08T16:20:18.377 回答