From: Yutaka Kanemoto Date: 2006-07-27T02:56:01+09:00 Subject: [ruby-dev:29145] AIXでのコンパイルについて お世話になります。金本ともうします。 #先日はhzの件すばやい御対応ありがとうございました。>まつもとさま #CVSで変更いただいたことを発見しました。 AIXでの需要がなさそうなので私一人で勝手に話を進めるのが申し訳ない のですが、1.8.5に間にあわそうと思っているわけではありませんので、 いつか時間のあるときにでもどなたかお相手いただけると幸いです。 前回書き忘れたのですが、今コンパイルにトライしている環境は、 AIX 5.3.0.4 XL C/C++ V8.0 という比較的最近のものです。 AIXでのコンパイルがすんなりいかないことを色々調べていますと、 以前のバージョンのAIXやコンパイラでの対応と思われるものがソースの いくつかの場所に見れるのですが、要するに最近のものですと動作が 変わったようで、対応しきれないようです。 ruby-talkなどに報告があるのですが、AIXでコンパイルしている方々は configureにオプションをいろいろつけたり、configure後にMakefileや ソースの一部をいじったりしてしのいでいるようです。 できるだけそのようなad hocなことをしないですむようにできればと 思い調べているのですが、以前のどこかのバージョンで動いていた ものを残したまま対応するということが難しいです。もうすこしいい ますと、コンパイル中にOSのバージョンやコンパイラのバージョンで 分岐するようにできたとして(実はそういうマクロを見つけられない というのもあるのですが)、いかんせんいつ動いていたかわからない 上に、古い環境を作れないので変更後にもとのものが古い環境で動くか どうかのテストが残念ながらできません。 私の技量でパッチが出せそうなのとりあえず現状で以下のものになります。 1.configure.in --with-gcc/--without-gccをつかって、xlcでもgccでもコンパイル できるように、オプションで分岐した上でリンカへのオプション等を それぞれのものにしたものをつくってみました。 2.#pragma allocaについて 上記の環境ですと、このpragmaについてワーニングが毎回出て しまうのを抑制できそうです。 3.large file supportについて 実際にはlarge file support には関係ないのですが、opensslと readlineのモジュールを入れたときにコンパイルエラーが起きます。 ruby-talkの過去ログなどでしらべると、unistd.hを抜いたり、 --disable-largefileを指定したりしていますが、よく調べると、 config.hのなかの#define_LARGE_FILES の宣言場所にAIX的に 不都合があるようです。 これであとはconfigureに--enable-sharedと--enable-wide-getaddrinfoを 指定し、opensslやzlibやreadlineなどの場所がIBMが配っている バイナリは/opt/freeware以下にあるのでその指定をすれば、 コンパイルに成功します。残念ながらmake checkに5つ失敗しますが、 今後もなるべくオプションはconfigureでしのげないかやテスト失敗の 原因などは模索するつもりではあります。 ただ、今あるAIX対応のコードをいじっていいものか判断つかない上に、 3番目の報告が無理難題かもしれないのですが、以前AIXのご対応 いただいた方かあるいはどなたか一緒に吟味していただける方は いらっしゃいますでしょうか? この作業を続けていて採用される可能性はありますでしょうか? 長文失礼いたしました。よければ報告できることから徐々に報告させて いただきたいと思います。また、もし内容がこのメーリングリストに ふさわしくないなど何か不行き届きや失礼がありましたら 申し訳ありませんがご一報いただけると幸いです。どうもすみません。 よろしくおねがいします。