[前][次][番号順一覧][スレッド一覧]

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]