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>]