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