Eclipse CDT - 在Windows中使用objdump

时间:2014-03-22 19:33:36

标签: eclipse eclipse-cdt

Eclipse CDT Binary Parser' GNU Elf Parser '在我的Windows上安装Eclipse时出现问题。

  • 一切正常在linux安装上运行

问题

我有一个GNU ELF 32格式的编译ELF。当我尝试使用GNU Elf Parser查看时,我得到:

java.io.IOException: Cannot run program "objdump": Launching failed
at org.eclipse.cdt.utils.spawner.Spawner.exec(Spawner.java:347)
...
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Deubg

当然,这只是意味着CDT插件无法找到objdump。

  • 测试的ELF在linux-eclipse-cdt安装中正确打开

  • 说我的 objdump 位于' C:\ binutils \ bin '

  • 你如何设置Eclipse的CLASSPATH来搜索那里?

我已经尝试了几件事,从编辑我的系统PATH或CLASSPATH。我也试过设置Workspace& C / C ++ Build / Env设置。没有任何效果。

问题

你怎么能让它发挥作用?

修改 - 基本解决方案

感觉有点傻,但要解决你只需要安装MinGW并将C:/ MinGW / bin添加到PATH。然后重启Eclipse。

  • 我用我们自己的内部工具链生成我自己的Eclipse发行版& objdump版本,因此混合!

  • 我已经尝试了其他几种方法让它工作(所以我最终可以使用我们自己的objdump实例,但没有运气!

基本解决方案备注:

  1. C:\ MinGW \ bin所需要的只是:

    • objdump.exe
    • addr2line.exe
    • C ++ filt.exe
    • libgcc_s_sw2-1.dll
    • zlib1.dll
  2. 因此,如果你将它们移动到 C:\ myGnuBinUtils 并将其添加到你的系统 PATH (不是某些eclipse设置,实际路径),那么也有效。

    • 这些文件总共24MB; MinGW是715MB ......

    有没有人知道如何通过HAVING来修改系统路径来实现相同的结果?

1 个答案:

答案 0 :(得分:2)

听起来你需要一个“ObjDump”Java包装器。例如:

“CLASSPATH”仅限Java:它不会影响运行非Java .exe

Java exec()将使用Java VM的系统PATH。但是,您可以在运行时修改它。例如:

using Runtime.exec() in Java

ProcessBuilder proc = new ProcessBuilder("<Directory PAth>" + "Executable.exe");
proc.redirectOutput(ProcessBuilder.Redirect.INHERIT);
proc.directory(fi); //fi = the output directory path
proc.start();