このページは機械翻訳したものです。
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 でコンパイルすることでこの不一致を解決できます。