ユニバーサルバイナリを作る
コードから実行ファイルを生成する際にユニバーサルバイナリを生成するとPowerPC MacであれIntel Macであれ、32bitであれ64bitであれどのMac OS X上でも動く実行ファイルを生成できる。
コマンドラインからユニバーサルバイナリを生成する
コマンドラインからgcc/g++を起動してユニバーサルバイナリを生成するにはプログラムを動作させたいアーキテクチャを-arch target オプションをつけて指定する。
続きを読むconfigureスクリプトを用いた場合のユニバーサルバイナリのビルド方法
CFLAGSとCXXFLAGSとLDFLAGSで動かしたいアーキテクチャを指定する。また、configureスクリプトの--disable-dependency-trackingオプションを指定する。
> CFLAGS="-arch i386 -arch ppc -arch x86_64 -arch ppc64" CXXFLAGS="-arch i386 -arch ppc -arch x86_64 -arch ppc64" LDFLAGS="-arch i386 -arch ppc -arch x86_64 -arch ppc64" ./configure --disable-dependency-tracking
Macportsでユニバーサルバイナリを作る
ユニバーサルバイナリを作る際にはリンクする共有ライブラリもユニバーサルバイナリでなければならない。Mac OS Xに標準でインストールされているライブラリは全てユニバーサルバイナリだが、Macportsなどパッケージ管理ソフトウェアを用いてインストールしたものは標準ではユニバーサルバイナリではない。
port installをする時に+universal を指定するとユニバーサルバイナリが作られるはずだが、-isysroot /Developer/SDKs/10.4u.sdk (Mac OS X の ppc版でユニバーサルバイナリを作る時に必要なオプション)の設定がされているが、10.5の場合はこのオプションでは動かない。Xcode 3.0のライブラリをインストールした上でそのライブラリを読むように設定しなければならない。
続きを読む