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

mysql:259

From: "民斗 " <"民斗 " <tommy@xxxxxxxxxx>>
Date: Mon, 21 Sep 1998 13:44:02 +0900
Subject: [mysql 259] Re: ruby.. unresolv moddi3


[Subject: [mysql 258] ruby.. unresolv moddi3]
[Date: Mon, 21 Sep 1998 12:48:51 +0900  From:takeshi@xxxxxxxxxx]

> ちょっと民斗さんの ruby を使って、 ruby の勉強でもしようとおもって、

おお〜 ruby-mysql の初ユーザかも… (^^)


> コンパイルしたのですが、
> require "mysql"
> で
> ruby: can't resolve symbol '__moddi3'
> ruby: can't resolve symbol '__divdi3'
> となってしまいました。
> ( gcc-2.7.2, mysql-3.22.4a-beta, Linux libc5 )

あ、なりました。そういえば。なんかコンパイル環境によって発生したり
なかったりするような感じだったので、どうしようかと思いつつ特に
ドキュメントにも書きませんでした。


> どうも、libmysqlclient が呼び出している関数の一部が、
> gcc がリンク時に使う自分の libgcc.a 内にある moddi3 , divdi3 を
> 呼び出しており、これが ruby , mysql.so , libmysqlclient.so|.a
> のすべてで unedf となっているため、おきているようです。
> 
> で、しょうがないので、ruby の main.c に、moddi3 を使うように、
> 全く使わない関数を入れて gcc をだまして回避したわけですが、
> もっとうまく回避できないものでしょうか?

現象としては、MySQL のマニュアルの「Perl installation comments」に
書かれてるのと同じなんで、同じように対処できます。

具体的には extconf.rb の $libs に "/usr/local/gcc-lib/〜〜/libgcc.a"
を追加すればうまくいくと思います。


> # ruby 本体を -lmysqlclient でコンパイルすると多分行くかな?
> # ruby 本体が libmysqlclient に依存するのもいやだなぁ...

そうですね。それはいまいちだと思います (^^;


> これって、Linux の gcc-2.7.2 だけで起こってます?
> 他の環境ではどうなんでしょう?

確か SPARC の gcc-2.7.2.2 でも発生したと思います。gcc-2.8.1 でも
起こったかもしれません。もしかすると発生しない環境というのは私の
勘違いで全ての環境で発生するのかもしれません…(^^;;

--
民斗 <tommy@xxxxxxxxxx>

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

->     259 1998-09-21 13:44 ["民斗 " <tommy@xxxxx] Re: ruby.. unresolv moddi3              
       260 1998-09-21 14:46 ┣[民斗 <tommy@xxxxxxxx]                                       
       261 1998-09-21 15:02 ┗[<takeshi@xxxxxxxxxx>]