2009-09-07 55 views
3

我指的是以下來源:http://clpbar.sourceforge.net大廈以產生二進制的Mac OS 10.5(10.6)

生成過程是標準:./configure隨後make

如果我建立10.5我得到一個二進制其file包含:Mach-O executable i386
如果我建立在10.6,我得到一個二進制其file包含:Mach-O 64-bit executable x86_64

如何從命令建立並且生成Mach-O executable i386類型的可執行文件,或者更好的是包含兩種類型可執行文件的通用二進制文件。

請測試任何建議的解決方案。

感謝,
亞光

回答

3

從蘋果開發論壇:

./configure CC="gcc -arch i386" CXX="g++ -arch i386" 

這完美的作品。

+0

我認爲這不會構建「兩種」類型的通用二進制文件? – rogerdpack 2013-04-11 14:22:15

+0

@rogerdpack試試看看。用'file'命令檢查二進制文件,看看它包含哪些體系結構。另請參閱其他答案。 – 2013-04-18 11:32:20

1

使用-arch標誌爲每個目標。所以,例如

gcc -arch i386 -arch x86_64 ... 

將與這兩者構建一個胖二進制文件。我相信,默認情況下,gcc將構建到目標架構,即x86_64和OSX 10.6。

3

默認情況下,隨OS X 10.6發行的GCC版本將生成64位二進制文​​件。與10.5分發的GCC版本默認構建32位二進制文​​件。

在運行./configure之前,設置一些環境變量。如果你希望它是英特爾通用二進制與i386和x86_64的代碼,設置下列變量(假設你使用bash):

export CFLAGS="-arch i386 -arch x86_64" 
export CXXFLAGS=$CFLAGS 
export LDFLAGS=$CFLAGS 

這將告訴配置腳本通過這些編譯器和連接選項,從而構建一個包含i386和x86_64體系結構的二進制文件。

或者,如果你想讓它只能建作爲i386的二進制:

export CFLAGS="-arch i386" 
export CXXFLAGS=$CFLAGS 
export LDFLAGS=$CFLAGS 
+0

我剛試過這個,它沒有工作。難道環境變量會被./configure覆蓋嗎? – 2009-09-08 11:12:51