2011-12-14 97 views
5

由於Apple不支持GCC 4.6或GCC 4.7,我只是切換到MacPorts的GCC 4.6/4.7版本。但是,我在「通用」體系結構中構建代碼時遇到了問題。我可以使用Macports的GCC編譯通用代碼嗎?

傳統上,我會做g++ -arch i386 -arch x86_64 ...編譯我的二進制至少i386/x86_64架構。我做了一些搜索,並意識到-arch選項只被蘋果的編譯器支持。所以它當然不適用於Macports。我能做的最好的是使用-m32/-m64選項來指定我想要的架構。但是,這隻會生成i386或x86_64格式的二進制二進制文件。我真正想要的是在兩個架構(通用)中獲得二進制文件,就像使用原始GCC編譯器一樣。

這是不支持或一個已知的問題?我試了整晚在Google上尋找答案,但我沒有得到任何有用的東西。所以我只是開始懷疑,如果我是唯一有這個問題,我錯過了一些真正重要的事情來實現它的工作?真的很感激,如果有人可以給我一些建議。

順便說一句。我已經安裝了gcc46 +universal變體,但除了爲每個體系結構編譯單獨的二進制文件外,它沒有產生任何真正通用的東西。

邢。

回答

3

您可以使用lipo將具有不同體系結構的二進制文件合併爲一個通用文件。

+0

感謝的作品。我不知道有脂肪,我想我真的需要的是脂肪。我需要更改一些Makefiles來停止arch標誌並使用lipo生成通用代碼:) –

6

哦,我只是有這個問題,花了相當多的時間在它上面。事實證明,GCC 4.2.1的蘋果版本實際上只是一個包裝,它承認幾個標誌(特別是-arch標誌),然後使用lipo將目標文件粘在一起成爲一個胖對象。我修改了一下這個驅動程序,這樣它會包裝macports GCC,同時仍然支持-arch標誌並生成多個arch目標文件(無論如何32位和64位intel)。

我剛剛發佈了一個相當廣泛寫了關於如何做到這一點:

http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html

相關問題