2009-09-19 90 views
3

升级到Snow Leopard后,我无法在计算机上运行Eclipse CDT项目。构建过程完成后没有任何错误,但Eclipse不识别它创建的二进制文件。当试图指向运行配置..对话框中的二进制文件时,它无法在项目中找到任何二进制文件。尽管从终端执行文件工作正常。雪豹上的Eclipse CDT无法找到二进制文件

根据Eclipse论坛上的a post,这可能是Mach-O解析器无法识别64位二进制文​​件的问题。有谁知道问题的解决方案或解决方法是什么,以便我可以在Snow Leopard上运行/调试我的C++项目。

修订

通过Shane提出的解决方案,但允许创建识别二进制,确实引入了另一个问题。由于Snow Leopard中的系统库全部为64位,因此不再可能将使用-arch i386创建的代码与这些库链接,因此尚不可行。

+0

是的,你需要启用正确的二进制语法分析器来识别它。如果我错了,请纠正我,但在解析方面,64位二进制文​​件和32位二进制文​​件之间没有区别。操作码仍然是相同的长度,他们不是?只是单词不是64位而不是32. – ldog 2009-09-19 22:56:28

+0

此解决方法编译为32位二进制文​​件的结果是,我的代码无法再与编译为64位的MacPorts库链接。是否有其他可能的解决方案,例如是否有可能将二进制解析器更改为支持解析64位二进制文​​件的其他东西? – ejel 2009-09-22 19:05:18

回答

3

根据您引用的文章,您需要将-arch i386添加到项目的编译器和链接器设置中。然后,当你重建项目时,CDT拿起执行者。

项目属性 - > C/C++ Build - >设置。然后在编译器和链接器其他部分添加其他标志中的标志。

干杯,

+1

这个建议是有用的。以前,我只在编译器中添加了-arch i386标志而没有意识到链接器也会播放该部分。 – ejel 2009-09-21 15:59:02

+0

对不起,以前接受答案,并将其收回。我意识到解决方案实际上并没有工作,因为与64位系统库链接的问题。看到我更新的问题。 – ejel 2009-09-22 22:20:10

1

gmatt,

64个二进制文件是不同的,因为新的架构具有新通用寄存器,以及。体系结构中还有更多的差异会影响您将在二进制文件中看到的操作码。

干杯, 巴蒂尔

2

作为Eclipse的二进制解析器尚未更新,认识到新的64位Mach-O的二进制格式(https://bugs.eclipse.org/bugs/show_bug.cgi?id=270790),它看起来像唯一的解决方法,现在是32位编译代码位模式。

其结果是,无法将C/C++项目链接到任何系统库,因为它们大多数已经被编译为64位。

我现在的解决方案是临时切换到XCode。

+0

您现在可以在上面的链接中找到修复此问题的修补程序。 – ejel 2009-10-12 22:19:21

1

一个新的Mach 64位二进制解析器终于发布了。

我只是在Eclipse中进行了更新,并在项目属性下选择了新的二进制解析器。我终于可以在Eclipse中运行我的C++二进制文件,但由于某种原因,我仍然在为调试而苦苦挣扎。

0

正如我以前所知,二进制语法分析器位于 [Project Properties - > C/C++ Build - > Settings],如上所述。但我认为它已经改变了。我可以通过这种方式找到二进制解析器: [eclipse - >环境 - > C/C++ - >新建C/C++项目向导 - > makefile项目 - >二进制解析器 - > mach-O解析器(不赞成使用)]