コンテキスト:これが私の問題なのか、これが実行されているサーバーの問題なのかはわかりません。mysql ライブラリを使用する小さなユーティリティをコンパイルして実行し、cron ジョブにしようとしています。プログラムは次のコマンドで正常にコンパイルされ、エラーや警告は発生しません。
gcc my_program.c -o my_program -I /usr/include/mysql/ -L/usr/include/mysql -lmysqlclient -lglib-2.0 -Wall
追加-lglib-2.0
したので...
問題:プログラムを実行しようとすると、次のエラーで中止されます:
./my_program: symbol lookup error: /usr/lib/libmysqlclient.so.15: undefined symbol: strcpy, version GLIBC_2.0
エラーは、実行時に次の行で発生します。
conn = mysql_init(conn);
conn
として宣言されていますMYSQL *conn;
。これは、mysql.h から何かを使用するのは初めてであり (宣言を除く)、それ自体strcpy
を使用すると正常に動作しmy_program.c
ます。
リンク元のライブラリは次のlibmysqlclient.so.15
とおりです。
ldd /usr/lib/libmysqlclient.so.15
linux-gate.so.1 => (0xb7ef6000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7cf4000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7cc2000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7ca9000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7c84000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7c6f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7b20000)
/lib/ld-linux.so.2 (0xb7ef7000)
コードでできることはありますか、コンパイルまたはリンク パラメータに何か不足がありますか、それともlibmysqlclient.so.15
ライブラリ自体にあるライブラリの動的リンクに問題がありますか? 後者の場合 (mysql ライブラリがサーバーの他の場所で使用されていることを考えると、私はそうは思いません)、サーバーの管理者は問題を解決するために何ができますか?