From: "ngoto (Naohisa Goto)" Date: 2012-06-14T15:37:51+09:00 Subject: [ruby-dev:45742] [ruby-trunk - Bug #6591][Third Party's Issue] r35101以降、古いfccで拡張ライブラリのコンパイルに失敗 Issue #6591 has been reported by ngoto (Naohisa Goto). ---------------------------------------- Bug #6591: r35101以降、古いfccで拡張ライブラリのコンパイルに失敗 https://bugs.ruby-lang.org/issues/6591 Author: ngoto (Naohisa Goto) Status: Third Party's Issue Priority: Low Assignee: Category: build Target version: ruby -v: 2.0.0dev (2012-06-08) [sparc64-solaris2.10] 古いバージョンの Fujitsu C Compiler Driver Version 5.6 (Nov 24 2006) では、-E オプションを付けてプリプロセッサ処理のみを行う場合、-o で指定した出力ファイル名は無視して、必ず標準出力に結果を出力します。そして、-o で指定した出力ファイルは作成されません。 % cat > tmp.c #include int main(void) { return 0; } % fcc -E tmp.c -o tmp.i (画面出力略) % ls -la tmp.i tmp.i: No such file or directory このため、r35101 で lib/mkmf.rb の try_cpp がターゲットファイルの存在をチェックするようになって以降、古いfccでの拡張ライブラリ作成の際、ヘッダの検索に必ず失敗し、その結果、拡張ライブラリが作成されなかったり、適切なヘッダを#includeせずに型が適切に定義されないままコンパイルされてコンパイルに失敗します。なお、ruby本体は問題なく作成されます。 当該コンパイラのバグか仕様かはわかりませんが、普通に考えると、出力ファイルの存在をチェックするほうが当然好ましいため、Third Party's Issue として現象を記録するに留めます。 コンパイラを最新バージョンにバージョンアップするか、何らかのwrapper scriptを介することで対策可能です。 -- http://bugs.ruby-lang.org/