Как собрать толстый gcc46 libstdС++ на OS X?

Я успешно собрал и установил gcc 4.6.1 на свою коробку OS X, но я не могу заставить его создать для меня толстую/универсальную библиотеку libstdС++. Как мне это сделать?

По умолчанию /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

person Neil Steiner    schedule 10.11.2011    source источник


Ответы (1)


Только Apple GCC 4.2.1 все еще поддерживает толстые двоичные файлы. Вам придется выполнить дополнительные действия вручную (или предоставить чертовски хорошие скрипты-оболочки), чтобы дважды скомпилировать все исходники и запустить lipo на полученных двоичных файлах.

person rubenvb    schedule 10.11.2011
comment
rubenvb, липосакция сделала большую часть того, что мне было нужно. Спасибо. GCC, по-видимому, не создавал версию библиотеки ppc, но слияние версий i386 и x86_64 было легким делом. - person Neil Steiner; 11.11.2011