mysql:4220
From: e-oohira <e-oohira <e-oohira@xxxxxxxxxx>>
Date: Sun, 26 Aug 2001 23:21:07 +0900
Subject: [mysql 04220] Re: Ruby から使えない
おおひらです。 > >> bash-2.03# ruby -I. test.rb sparc.kumage-h.ed.jp > >> test.rb:11:in `require': ld.so.1: ruby: 重大なエラー: 再配置 エラ > >> ー: ファイル ./mysql.so: シンボル inet_addr: 参照シンボルが 見つか > >> りません。 - ./mysql.so (LoadError) > >> from test.rb:11 > > ldd mysql.so したら、どうなりますか。 こうなりました。 bash-2.03# ldd mysql.so libc.so.1 => /usr/lib/libc.so.1 libdl.so.1 => /usr/lib/libdl.so.1 /usr/platform/SUNW,Sun-Blade-100/lib/libc_psr.so.1 > libmysqlclient.so が見つからないというエラーは出るでしょうか。 > inet_addr の実体が libmysqlclient.a にあるなら、mysql.so の作成 時に > スタティックリンクするようにしてあげればいいと思います。 > MySQLをソースコードから下記のようにインストールし たところ bash-2.03# ldd mysql.so libmysqlclient.so.10 => (ファイルが見つかりません) libz.so => /usr/local/lib/libz.so libm.so.1 => /usr/lib/libm.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 となるので LD_RUN_PATH=(インストール先)/lib/mysql と libmysqlclient.soなどのありかを指定してやると うまくいきました。 今はこんな状態です。 bash-2.03# ldd mysql.so libmysqlclient.so.10 => /sol/mysql/lib/mysql//libmysqlclient.so.10 libz.so => /usr/local/lib/libz.so libm.so.1 => /usr/lib/libm.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libc.so.1 => /usr/lib/libc.so.1 libcrypt_i.so.1 => /usr/lib/libcrypt_i.so.1 libgen.so.1 => /usr/lib/libgen.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libmp.so.2 => /usr/lib/libmp.so.2 /usr/platform/SUNW,Sun-Blade-100/lib/libc_psr.so.1 私は、ライブラリ関係に(も)弱いので mysql.so の作成時にスタティックリンクするようにしてあげればいいと いう意味と実際の操作方法(どう指定するのか)がよくわからなかった ので、これが本質的な解決法なのかもはっきりしません。 > >> configure時にエラーをはきます。 > >> > >> bash-2.03# ./configure --prefix=/usr/local/mysql > >> --localstatedir=/usr/local/mysqldata \ > >> > --with-charset=ujis > >> checking whether the C++ compiler (c++ ) is a cross-compiler... > >> yes > > inet_addr の実体が libmysqlclient.a にあるなら、mysql.so の作成 時に > これが原因です。 > たぶん、この gcc は 64bit と 32bit の両方のコードが吐けるものな ので > はないでしょうか。 > # 私も、このエラーを経験しましたが、その時は上記のコンパイラで コン > # パイルしたときでした。 > > で、この時は、cross-compiler オプションを無理矢理 no にするよ う、 > configure ファイルを編集して、逃げました。(^^; > # もっとスマートな方法があるような気もしましたが、時間がなかっ たもので...。 とみたさんの指摘で % env CXX=gcc ./configure 〜〜 とやれば、できました。 -- e-oohira