きりかノート 3冊め

おあそびプログラミング

推測 - RubyCocoa のユニバーサルバイナリが i386 で動かない

[rubycocoa-devel:402] の話。

ふつうにスクリプトでつくった RubyCocoaユニバーサルバイナリのパッケージがどうもうまく動かないようだ。0.4.3d2 のときはちゃんと動いてたんだから、その後の変更があやしいよな。

というわけで、まずは setup 時の出力を見てみよう。


MasterObjectLink /Users/kimuraw/proj/rubycocoa/src/framework/
build/RubyCocoa.build/Default/RubyCocoa.build/Objects-normal/
RubyCocoa-ppc-master.o

なんだか見たことない出力が。これのどこがあやしいかっていうと、ppc だけでi386 に関する出力がないんだよな。この master.o の i386 向けのオブジェクトが作成されていないために、intel Mac で動いていないんじゃなかろうか。

これは比較的最近にいれた Xcode のオプション GENERATE_MASTER_OBJECT_FILE がバツグンにあやしい。試しにこれを無効にして、再度 setup してみよう。

すると、上記の MasterObjectLink のプロセスがなくなった。前後の処理を見ても、これでよさそうな感じ。けっこう自信あるので ML にも "believe" とか思わず書いてしまった。

(2006/10/25 追記: そんなこと言っても、だめなものはだめなのだ。つづき

で、これで解決したらどうするかってことを考えた。以前にも書いたように、GENERATE_MASTER_OBJECT_FILE は .a な libruby で RubyCocoa を構築するためには必要なので、単純に削ってしまうと、あとで「ビルドできないっすよ」という問い合わせに対応しなくちゃなんなくなるので残したい。なので、libruby が .a のときのみ GENERATE_MASTER_OBJECT_FILE を YES にするようにパッチを書いた。