メモ:Snow Leopard上でLeopardで動くバイナリをビルドするには

g++のオプションに以下を入れてビルドすればよい。(もちろんSnow LeopardのCDからXCode Toolsをインストールしたあとで。)

-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5

もし、以下のようなエラーが出たら、ライブラリのarchitectureが合っていない。

ld: warning: in libXXX.dylib, file is not of required architecture

architecureを確認するには、

file libXXX.dylib

その結果、

libXXX.dylib: Mach-O 64-bit executable x86_64

と出たら、64bitでビルドされているということなので、32bit(-arch i386)か、64bitと32bitのUniversal binary(-arch i386 -arch x86_64を同時に指定)でリビルドする必要がある。

Macportsで入れたライブラリだったら、

sudo port install libXXX +universal

というように+universalを指定すると多くのライブラリでUniversalでビルドしてくれる。

さらにそのライブラリにdependencyがある場合は、入っているものを全部uninstallしてからやりなおす必要があるかも。

sudo port -f uninstall installed
sudo port install libXXX +universal
g++ -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 ...

参考:http://cocoawithlove.com/2009/09/building-for-earlier-os-versions-in.html