2009-09-19 96 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解析器(不贊成使用)]