From: "KISHIMOTO, Makoto" Date: 2009-07-05T12:32:30+09:00 Subject: [ruby-dev:38737] Re: FreeBSD で ruby-mecab のライブラリ参照の不具合 きしもとです mkmf.log を見たところ、こんな感じでした。 have_library: checking for main() in -lmecab... -------------------- no "cc -o conftest -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd7 -I. -O2 -fno-strict-aliasing -pipe -fPIC conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -rdynamic -lruby18-static -lmecab -lrt -lcrypt -lm -rpath=/usr/lib:/usr/local/lib " /usr/local/lib/libmecab.so: undefined reference to `pthread_create' checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; } /* end */ "cc -o conftest -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd7 -I. -O2 -fno-strict-aliasing -pipe -fPIC conftest.c -L. -L/usr/local/lib -Wl,-R/usr/local/lib -L. -rdynamic -lruby18-static -lmecab -lrt -lcrypt -lm -rpath=/usr/lib:/usr/local/lib " /usr/local/lib/libmecab.so: undefined reference to `pthread_create' checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { main(); return 0; } /* end */ libmecab の pthread_create が解決できないのが原因のようです。 trunk から入れてある、ruby19 ではうまくいくので、それとおもわれる 相違点をさがしたところ、-lthr がコマンドラインにあるかどうかの差でした。 extconf.rb に $LIBS = '-lthr ' + $LIBS という行を追加してみたところ、うまく動くようになりました。 なぜ私の環境でだけ起きているのか謎ですが...