MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
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 でコンパイルすることでこの不一致を解決できます。