2011-11-10 54 views
3

我已經在我的OS X機器上成功構建和安裝了gcc 4.6.1,但似乎無法讓它爲我創建一個胖/通用的libstdC++庫。我該如何做到這一點?如何在OS X上構建fat gcc46 libstdC++?

默認/usr/lib/libstdc++.6.dylib支持以下結構:

[host:~] nsteiner% file /usr/lib/libstdc++.6.dylib 
/usr/lib/libstdc++.6.dylib: Mach-O universal binary with 3 architectures 
/usr/lib/libstdc++.6.dylib (for architecture i386):  Mach-O dynamically linked shared library i386 
/usr/lib/libstdc++.6.dylib (for architecture ppc7400): Mach-O dynamically linked shared library ppc 
/usr/lib/libstdc++.6.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 

我想爲GCC給我一個/usr/local/lib/libstdc++.6.dylib爲那些相同的體系結構,但我嘗試configure--enable-multilib--with-multilib-list=i386,ppc,x86_64--enable-targets=all顯然是錯誤的。無論configure也不make產生錯誤,但是獲取生成所有是這樣的:

[host:~] nsteiner% file /usr/local/lib/libstdc++.6.dylib 
/usr/local/lib/libstdc++.6.dylib: Mach-O 64-bit dynamically linked shared library x86_64 

回答

2

只有蘋果的GCC 4.2.1還支持脂肪的二進制文件。你將不得不採取額外的手動步驟(或提供該死的包裝腳本)來編譯所有源代碼兩次,並對結果二進制文件運行lipo。

+0

rubenvb,lipo確實做了我所需要的大部分工作。謝謝。 GCC顯然沒有建立庫的ppc風格,但合併i386和x86_64版本是一件輕而易舉的事情。 –