From: dezawa Date: 2012-08-13T11:31:47+09:00 Subject: [ruby-list:48891] gem install mysql が失敗する 出沢です とある実験をするために、 VMware Player ubuntu-ja-11.10-desktop-i386 ruby1.8.7 rails 2.3.14 mysql 5.1 という環境を作りつつ有ります。 ここで gem install mysql が失敗します。 rubyかrailsかmysqlかどこに相談しようか悩んだのですが、 gem install, ruby1.8 extconf.rb での失敗なのでruby-MLに ご相談するのが適当かと判断しました。 よろしくお願いします。 === 詳細 === (1) gem install mysql すると失敗し次のメッセージがでます   Gem files will remain installed in /var/lib/gems/1.8/gems/mysql-2.8.1 for inspection.   Results logged to /var/lib/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out (2) gem_make.outを見ると、  /usr/bin/ruby1.8 extconf.rb が  checking for mysql_query() in -lmysqlclient... no という報告を6回だし、失敗しています。 mysql-2.8.1/ext/mysql_api にある mkmf.log には   find_library: checking for mysql_query() in -lmysqlclient...    -------------------- no という結果が6回あります。 (3)例えばその一つは "gcc -o conftest -I. -I/usr/lib/ruby/1.8/i686-linux -I. -I/usr/local/include -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -g -g -O2 -fPIC conftest.c -L. -L/usr/lib -L/usr/local/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8-static -lmysqlclient -lpthread -lrt -ldl -lcrypt -lm -lc" conftest.c: In function ‘t’: conftest.c:3:53: error: ‘mysql_query’ undeclared (first use in this function) conftest.c:3:53: note: each undeclared identifier is reported only once for each function it appears in checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))mysql_query; return 0; } /* end */ となっています。 -L/usr/lib -lmysqlclient しているのに、‘mysql_query’ undeclared はて、、、、、 (4) /usr/lib/libmysqlclient.* は4つ有ります。二つはシンボリック リンクです   *.so.16 *_r.so.16 *.so.16.0.0 *_r.so.16.0.0 (5) これらは strip されている様で nm では中身が分かりませんが strings /usr/lib/libmysqlclient.so.16.0.0 | grep mysql_query しますと mysql_query が確認されます。 (6) staticなライブラリが必要なのかも、と Ubuntu10から /usr/lib/libmysqlclient.a をコピーしてみたのですが、 mysql_query’ undeclared は変わりませんでした。  Ubunts11はまだ慣れていないのでlibmysqlclient.aを見つける  事ができなかったので、    どこかでエラーになるかも知れないが、少なくとも    リンクエラーは変わるだろう  と思い10からコピーし試行しました。  nm によれば 00003d90 T mysql_query ということで、  未解決シンボルでは有りませんでした。