mysql:1577
From: <takeshi@xxxxxxxxxx>
Date: Mon, 14 Feb 2000 16:34:24 +0900
Subject: [mysql 01577] Re: mysql-ruby のインストール
At Mon, 14 Feb 2000 15:00:08 +0900, N.Yoshida <yosh_no@xxxxxxxxxx> wrote: > >shell$ ruby > > は起動するか > >shell$ ruby -e "require 'socket'" > > は起動するか > >socket.so と mysql.so が同じ ld-linux.so を見ているか > > > >これらがクリアされているのに、 > > > >shell$ ruby -e "require 'mysql'" > > > >が動かないなら、原因は、 > > mysql.so を作成したとき、指定するライブラリが足りなかった > > mysql.so が必要としているライブラリが見つからなかった > > libmysqlclient.so へのパスが通っていない > > コンパイルに使用した gcc がわるい > >ぐらいしかないと思います > > 村上さんのコメントに従いやってみました。以下のようになりました。 > > ----------------------------------------------------------------------------- > fz000785:~# ruby > printf "test(%s)\n","TestString" > test(TestString) ◆ruby単体は動作している > fz000785:~# ruby -e "require 'socket'" ◆socketモジュールも動作しているようだ > fz000785:~# ruby -e "require 'mysql'" ◆mysqlモジュールは駄目らしい > /tmp/rba07173:1:in `require': File not found - /usr/local/lib/ruby/1.4/i586-linu > x/mysql.so (LoadError) > from /tmp/rba07173:1 > ----------------------------------------------------------------------------- > > 私自身よくわかっていないのですが、lddではsocket.soが認識されていないようなのに > rubyからはロードできているように思われるのが不思議です。 MySQL や ruby 本体をコンパイルしたのも同じマシン、同じ環境ですよね? それ以降に、なにか別途インストールしたとか、機械を移したとかはないですよね? ldd can't exec は、たとえば、libc6 のマシン上で作ったものを libc5 のましんで ldd すると、でるのですが (libc6には、ld-linux.so.2 があるけれど、通常のlibc5+ldsoには ld-linux.so.1しかない) 同じ環境で ruby と socket.so はコンパイルできて動くなら、 ここは ldd の問題はほっておいて、 (rubyがコンパイルできて動いているから. 気持ち悪いですが) mysql.so のコンパイルの問題を考えてみます > mysql.soの方は lddでも > rubyからでも正しく認識されていないようです。 > > 村上さんの指摘のなかで、ひとつ気になる点があります。(次行) > > > libmysqlclient.so へのパスが通っていない > > これ(libmysqlclient.so)が私のlinux(/lib,/usr/lib,/usr/local/lib)には無いよう > に思われます。これが最も怪しい。このライブラリはどのようにすればインストールさ > れるのか教えてください。 最初から無いのであれば、libmysqlclient.a しかないです。 (MySQL の default では、ライブラリは、/usr/local/lib/mysql/ にインストール) MySQL の configure 時に、libmysqlclient.a だけを作るようになったのかもしれません。 このばあい、.so は不要です。 gcc はリンクに、libmysqlclient.a を使用します もし、MySQL のソースが残っているなら、 そのソースの config.status ファイルや client/Makefile に、 ライブラリの指定があるはずです 例えば、 s%@CLIENT_LIBS@%-lm -lz %g や CLIENT_LIBS = -lm -lz LIBS = -lm -lz のように。 ここに追加されているライブラリは、-lmysqlclient の後にかならず 追加してコンパイルしなくてはなりません。 ただし gcc-2.7.2.3 か、gcc-2.95 以上 を使用します。 gcc-2.7.2.x の場合は、-lmysqlclient とともに、 /usr/lib/gcc-lib/2.7.2.3/libgcc.a のように、libgcc.a を念のため追加指定します。 (libgcc.a のパスは、 gcc -print-libgcc-file-name で得られると思います) # これらのことは、ruby だけでなく、perl やその他クライアントプログラム # 全てに適用します 例えば、私の libc5 linux マシンだと、 gcc -o radiusd radiusd.o ....\ -L/usr/local/lib/mysql -lmysqlclient -lm -lz ちなみに libc6 linux マシンだと、 -L/usr/local/lib/mysql -lmysqlclient -lm -lz -lcrypt -lnsl solaris マシンだと(zlibを自分で別途、マシンに入れている)、 -L/usr/local/lib/mysql -lmysqlclient -L/usr/local/lib -lz -lm -lnsl -lsocket gcc-2.7.2 + libc5 linux だと、 gcc ..... \ /usr/lib/gcc-lib/2.7.2.3/libgcc.a /usr/local/lib/mysql/libmysqlclient.a -lm -lz # ライブラリの指定をやりなおしてコンパイルし直して、それでだめなら、 # ゼロからシステムをインストールし直しがすっきりするかも?...(^^;;; -- 村上 毅 takeshi@xxxxxxxxxx
1562 2000-02-10 10:06 ["N.Yoshida" <yosh_no] mysql-ruby のインストール 1563 2000-02-10 12:22 ┗[とみたまさひろ <tomm] 1564 2000-02-10 13:01 ┗["N.Yoshida" <yosh_no] 1565 2000-02-10 14:25 ┗[とみたまさひろ <tomm] 1570 2000-02-14 11:06 ┗["N.Yoshida" <yosh_no] 1571 2000-02-14 11:29 ┣[とみたまさひろ <tomm] 1572 2000-02-14 12:50 ┃┗["N.Yoshida" <yosh_no] 1573 2000-02-14 13:08 ┃ ┗[とみたまさひろ <tomm] 1574 2000-02-14 13:43 ┗[<takeshi@xxxxxxxxxx>] 1575 2000-02-14 13:54 ┣[<takeshi@xxxxxxxxxx>] 1576 2000-02-14 15:00 ┗["N.Yoshida" <yosh_no] -> 1577 2000-02-14 16:34 ┗[<takeshi@xxxxxxxxxx>] 1578 2000-02-15 10:06 ┗["N.Yoshida" <yosh_no] 1579 2000-02-15 10:16 ┗[とみたまさひろ <tomm] 1580 2000-02-15 10:45 ┗["N.Yoshida" <yosh_no] 1581 2000-02-15 11:20 ┣[とみたまさひろ <tomm] 1584 2000-02-15 13:23 ┗[UENO Kazuaki <kazu@x]