プログラムをリンクするときに、mysql_
で始まる未参照シンボルに関する以下のようなエラーが発生する場合
/tmp/ccFKsdPa.o: In function `main': /tmp/ccFKsdPa.o(.text+0xb): undefined reference to `mysql_init' /tmp/ccFKsdPa.o(.text+0x31): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x57): undefined reference to `mysql_real_connect' /tmp/ccFKsdPa.o(.text+0x69): undefined reference to `mysql_error' /tmp/ccFKsdPa.o(.text+0x9a): undefined reference to `mysql_close'
これは、リンク行の最後に
-Lpath-to-the-mysql-library-lmysqlclient
を追加すると解決できます。
uncompress
または
compress
関数で undefined
reference
エラーが発生する場合は、リンク行の最後に
-lz
を追加して再度実行してください。
システムにあるはずの関数(例:
connect
)に対して undefined
reference
エラーが発生する場合は、該当する関数を man
ページで確認し、そのライブラリをリンク行に追加するかどうか判断してください。
以下のように、システムに存在しない関数で
undefined reference
エラーが発生する場合
mf_format.o(.text+0x201): undefined reference to `__lxstat'
これは、通常、使用しているシステムと 100% 互換でないシステム上でライブラリがコンパイルされていることを示しています。この場合、最新の MySQL ソースディストリビューションをダウンロードし、それを独自にコンパイルしてください。 See 項2.3. 「MySQL ソースディストリビューションのインストール」。
プログラムを実行しようとしているが、mysql_
で始まるエラーか、mysqlclient
ライブラリが見つからない未参照シンボルのエラーが発生する場合は、システムが
libmysqlclient.so
共有ライブラリを見つけられないということを示しています。
これを解決するには、以下のいずれかの方法で、関数が組み込まれている共用ライブラリを検索するように、システムに指示します。
LD_LIBRARY_PATH
環境変数に
libmysqlclient.so
が存在するディレクトリのパスを追加する。
LD_LIBRARY
環境変数に
libmysqlclient.so
が存在するディレクトリのパスを追加する。
libmysqlclient.so
をシステムが検索する場所(たとえば
/lib
)にコピーし、ldconfig
を実行して共有ライブラリ情報を更新する。
この問題を解決するもう
1つの方法として、-static
を使用するか、コードをリンクする前に MySQL
の動的ライブラリを削除して、プログラムを静的にリンクする方法があります。2
番目のケースでは、別のプログラムが動的ライブラリを使用していないことを確認する必要があります。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.