覚え書〜lipo

lipoというコマンドを知ったので早速テスト。(MacBook Pro/Core2 Duo/MacOSX 10.5.2にて確認)

[axis:~] me% cc -Wall main.cpp -lstdc++ -o out32
[axis:~] me% file out32
out32: Mach-O executable i386
[axis:~] me% cc -Wall -arch x86_64 main.cpp -lstdc++ -o out64
[axis:~] me% file out64
out64: Mach-O 64-bit executable x86_64
[axis:~] me% lipo -arch i386 out32 -arch x86_64 out64 -output a.out -create
[axis:~] me% file a.out
a.out: Mach-O universal binary with 2 architectures
a.out (for architecture i386): Mach-O executable i386
a.out (for architecture x86_64): Mach-O 64-bit executable x86_64

なるほど、これで32bitと64bitのバイナリを一つにまとめられるわけね。既存のコマンドも実はPowerPCIntelアーキテクチャのバイナリが合体しているのであった。

[axis:~] me% file `whereis python`
/usr/bin/python: Mach-O universal binary with 2 architectures
/usr/bin/python (for architecture ppc7400):	Mach-O executable ppc
/usr/bin/python (for architecture i386):	Mach-O executable i386