2009-04-24

GaucheをIA-32のSun Studio Expressでビルド

Gauche 0.8.14をSun Studio Express November 2008でビルドできるか? 結論から言えば、できる。でもやる価値があるとは思えない。ただし、調べた内容を捨てるのも勿体無いので、大筋だけ記録しておく。詳細は省く。

configureしてからmakeすると、libgauche.soが生成されずにエラーになる。これは、Gaucheのconfigureの問題。SHLIB_SO_LDFLAGSの-hを-oに置き換えてやれば、処理が進むようになる。

次に、いくつかのシンボルが定義されていないというエラーが出る。これはBoehm GCの問題。SunのCコンパイラでビルドする場合にIA-32がサポートされていないのが原因。ただし、抜け道を使える。AO_USE_PTHREAD_DEFSマクロを定義してビルドすれば、本来の処理をPOSIXスレッドのロックでエミュレートしてくれるので、それを使う。加えて、強制的にSPARC向けのアセンブリコードを使うようになっているので、configureの該当する部分をコメントアウト。need_atomic_ops_asmがtrueでなければ、アセンブリコードは使われない。

以上の修正で、最後までビルドできる。ただ、Boehm GCがIA-32のSun Studioをサポートしていないのは変わらないし、AO_USE_PTHREAD_DEFSは遅いとドキュメントにも書かれている。GCCを使えば、こんな手間は必要ないんだから、余程の理由がない限り、GCCを使う方が良いだろう。

0 件のコメント: