Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


2.13.3 Perl DBI/DBD インタフェース使用の問題

Perl が ../mysql/mysql.so モジュールを見つけることができない場合、問題はおそらく Perl が libmysqlclient.so 共有ライブラリの場所がわからないことです。この問題は次の方法のいずれかで解決できるはずです。

  • libmysqlclient.so をほかの共有ライブラリがある (おそらく /usr/lib あるいは /lib) ディレクトリにコピーします。

  • DBD::mysql のコンパイルに使用される -L オプションを、libmysqlclient.so の実際の場所を反映するように変更します。

  • Linux では、libmysqlclient.so があるディレクトリのパス名を /etc/ld.so.conf ファイルに追加できます。

  • libmysqlclient.so があるディレクトリのパス名を LD_RUN_PATH 環境変数に追加します。システムの中には LD_LIBRARY_PATH を使用しているものもあります。

リンカーが見つけられないほかのライブラリがある場合も、-L オプションを変更する必要がある場合があります。たとえば、libc/lib にあり、リンクコマンドが -L/usr/lib を指定しているためにリンカーがそれを見つけられない場合、-L オプションを -L/lib に変更するかあるいは -L/lib を既存のリンクコマンドに追加します。

DBD::mysql から次のエラーが表示された場合、おそらく gcc (あるいは gcc でコンパイルされた旧バイナリ) を使用しているでしょう。

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

mysql.so ライブラリがビルドされるときに、-L/usr/lib/gcc-lib/... -lgcc をリンクコマンドに追加します (Perl クライアントのコンパイル時に、make の出力で mysql.so を確認します)。-L オプションは、システム上の libgcc.a があるディレクトリのパス名を指定するようにしてください。

この問題の別の原因は Perl および MySQL が両方とも gcc でコンパイルされていない場合です。この場合、両方を gcc でコンパイルすることでこの不一致を解決できます。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.