64bitのMacで32bitコードを選択して実行する
Snow Leopardではいろいろなところで64bit/32bit両方のコードが利用できるようになった。両方のバイナリを含むとき、実行環境のアーキテクチャが優先的に選択される。64bitのMacで32bitコードを動かしたいときにどうすればよいか、のメモ。
どちらもLeopardで既に導入されていたものの、10.5では64bitコードはあんまり使ってなかったから知らなかったよ。
アプリケーションの場合
LSArchitecturePriorityを使う。
- http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/PListKeys.html#//apple_ref/doc/uid/20001431-106825-TPXREF124
- http://developer.apple.com/mac/library/releasenotes/Carbon/RN-LaunchServices/index.html
% LSArchitecturePriority=i386 ./MyApp.app/Contents/MacOS/MyApp
Finderで「32bitモードで開く」にチェックつければいい話ではあるけれど。
コマンドの場合
archコマンドを使う。
% arch -i386 ruby script.rb