From: Takahiro Kambe Date: 2004-11-17T11:48:08+09:00 Subject: [ruby-list:40309] extconf.rb's problem? こんにちは。 extconf.rb関連で気がついたことを(忘れないように)書かさせていただきます。 1. ライブラリの検知に失敗して、Makefileが作成できなかったにも関わらず、 exit statusが0となるようです。 pkgsrcベースの拡張ライブラリの作成で、configureの段階で失敗し ているのに、buildの段階に進んでしまう。 という報告を受けました。これは確かに嬉しくありません。 2. gcc 3.X(?)では、数学関数のlog()が「GCC組み込み関数」となっているた めか、 int main() { return 0; } int t() { log(); return 0; } といったlog()がlibmに含まれているか、といった検査で、 conftest.c: In function `t': conftest.c:4: error: too few arguments to function `log' と。続く、 int main() { return 0; } int t() { void ((*volatile p)()); p = (void ((*)()))log; return 0; } では、 conftest.c: In function `t': conftest.c:5: error: `log' undeclared (first use in this function) conftest.c:5: error: (Each undeclared identifier is reported only once conftest.c:5: error: for each function it appears in.) となってしまい、 have_library: checking for log() in -lm... no となってしまいます。幸い、rbconfig.rbのCONFIG["LIBS"]に -lm が含 まれていることで救われています。 検証したのは、ruby-1.8.2preview3を、 % uname -sr NetBSD 2.99.10 % gcc --v Using built-in specs. Configured with: /home/nick/work/netbsd/src/tools/gcc/../../gnu/dist/gcc/configure --enable-long-long --disable-multilib --enable-threads --disable-symvers --build=i386-unknown-netbsdelf2.0. --host=i386--netbsdelf --target=i386--netbsdelf : (reconfigured) /home/nick/work/netbsd/src/tools/gcc/../../gnu/dist/gcc/configure --enable-long-long --disable-multilib --enable-threads --disable-symvers --build=i386-unknown-netbsdelf2.0. --host=i386--netbsdelf --target=i386--netbsdelf Thread model: posix gcc version 3.3.3 (NetBSD nb3 20040520) といった環境で、 % sh configure --prefix=/usr/pkg --enable-shared としてコンパイルを行いました。状況は過去のruby 1.6ベースでも同様な気が します。 -- 神戸 隆博(かんべ たかひろ) at 仕事場