at_yasu's blog

ロード的なことを

Univarsal Binary の作り方

現在、Apple社が出しているコンピュータは全て Intel社製のCPUが入ってます。以前(去年の今頃か?)までは、IBM社製のPowerPCが使われておりました。
この二つのCPUは、内部的には処理方法が全然違います。*1そんなわけで、CPUの違いをソフトウェアで吸収する技術をUniversal Binaryと云います。

そんな訳で、これはMacOS 10.4 以降のMacでしか通用しない話です。*2


普段、Xcodeを使っている場合は、アーキテクチャの設定を編集すればいいです。


AutoConfで作られている場合、下記のように実行します。

> env CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" \
LDFLAGS="-arch i386 -arch ppc"   ./configure --disable-dependency-tracking

ちなみにMacOSXでは、Mach-O型で作られているファイルが実行形式になっているのですが、このファイル形式により、様々なバイナリーファイルを一つのファイルにすることができます。つまり、二つだけでなく三つ四つのCPU専用の実行ファイルを包括することができるのです。下記は、64bitも追加した状態です。

> env CFLAGS="-O -g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc -arch x86_64 -arch ppc64" \
LDFLAGS="-arch i386 -arch ppc -arch x86_64 -arch ppc64" \
./configure --disable-dependency-tracking

参考:Open Source - Apple Developer
Technical Notes

*1:似たり寄ったりの機能はあります。SSEとAltiVecとか

*2:Intel MacをサポートしているMacOSって、10.4以降でしたよね…