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

mysql:4198

From: (Kikuchi Masayuki) <<makikuchi@xxxxxxxxxx>>
Date: Fri, 24 Aug 2001 12:19:56 +0900 (JST)
Subject: [mysql 04198] Re: Ruby から使えない

こんにちは、菊池といいます。

<20010823101716250.e-oohira@xxxxxxxxxx>の記事において
e-oohira@xxxxxxxxxxさんは書きました。

>> -------------
>> 補足
>> -------------
>> MySQLはSolaris8パッケージからインストールしたもの。
>> MySql自体は動いている。
>> 
>> 原因は、どうも
>> libmysqlclient.soがないからのようですが、パッケージからインストー
>> ルしたためか、libmysqlclient.soがどこにもありません。
>> (libmysqlclient.a はある)
>> ソースコードからインストールしようとすると別の問題でインストール
>> できない。
>> 
>> -------------
>> 経緯
>> -------------
>> MySQL導入後
>> Ruby-1.6.4をインストール -- うまくいった
>> 
>> mysql-ruby-2.3.2a.tar.gzを展開後以下
>> 
>> bash-2.03# pwd
>> /space/src/mysql-ruby-2.3.2a
>> bash-2.03# ruby extconf.rb 
>> creating Makefile
>> bash-2.03# make
>> 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 したら、どうなりますか。
libmysqlclient.so が見つからないというエラーは出るでしょうか。
inet_addr の実体が libmysqlclient.a にあるなら、mysql.so の作成時に
スタティックリンクするようにしてあげればいいと思います。


>> なお、(別の問題として)ソースからMySQLをコンパイルしようとする
>> と、
>> configure時にエラーをはきます。
>> 
>> bash-2.03# ./configure --prefix=/usr/local/mysql
>> --localstatedir=/usr/local/mysqldata \
>> > --with-charset=ujis
>> loading cache ./config.cache
>> checking host system type... sparc-sun-solaris2.8
>> checking target system type... sparc-sun-solaris2.8
>> checking build system type... sparc-sun-solaris2.8
>> checking for a BSD compatible install... ./install-sh -c
>> checking whether build environment is sane... yes
>> checking whether make sets ${MAKE}... (cached) yes
>> checking for working aclocal... missing
>> checking for working autoconf... missing
>> checking for working automake... missing
>> checking for working autoheader... missing
>> checking for working makeinfo... missing
>> checking whether to enable maintainer-specific portions of
>> Makefiles... no
>> checking whether build environment is sane... yes
>> checking whether make sets ${MAKE}... (cached) yes
>> checking for gawk... (cached) nawk
>> checking for gcc... (cached) gcc
>> checking whether the C compiler (gcc   ) works... yes
>> checking whether the C compiler (gcc   ) is a cross-compiler...
>> no
>> checking whether we are using GNU C... (cached) yes
>> checking whether gcc accepts -g... (cached) yes
>> checking for c++... (cached) c++
>> checking whether the C++ compiler (c++   ) works... yes
>> checking whether the C++ compiler (c++   ) is a cross-compiler...
>> yes

inet_addr の実体が libmysqlclient.a にあるなら、mysql.so の作成時に
これが原因です。
たぶん、この gcc は 64bit と 32bit の両方のコードが吐けるものなので
はないでしょうか。
# 私も、このエラーを経験しましたが、その時は上記のコンパイラでコン
# パイルしたときでした。

で、この時は、cross-compiler オプションを無理矢理 no にするよう、
configure ファイルを編集して、逃げました。(^^;
# もっとスマートな方法があるような気もしましたが、時間がなかったもので...。

--
菊池 雅行

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

      4192 2001-08-23 19:17 [e-oohira <e-oohira@x] Ruby から使えない                       
->    4198 2001-08-24 12:19 ┣[<makikuchi@xxxxxxxxx]                                       
      4199 2001-08-24 12:36 ┣[Hiroki TANIKAWA <hir]                                       
      4202 2001-08-25 18:06 ┗[とみたまさひろ <tomm]