ここの mySQL Web サイトの指示に従って、Ubuntu 10 を実行している ARM コンピューターで mySQL C コネクタをビルドしました。次に、ビルドされたヘッダーとライブラリを、正しいシステム リンクと共に、 および で指定されたパスにコピーしましmysql_config --cflags
たmysql_config --libs
。したがって、から次の出力がありますmy_sql_config --cflags --libs
。
-I/usr/local/include
-L/usr/local/lib -lmysql -lpthread
および次のディレクトリ ツリー:
/usr/local/include:
atomic hash.h my_aes.h my_base.h my_dbug.h my_list.h my_pthread.h my_trie.h mysql.h mysys sha2.h t_ctype.h waiting_threads.h
base64.h keycache.h my_alarm.h my_bit.h my_dir.h my_md5.h my_stacktrace.h my_uctype.h mysql_com.h mysys_err.h sql_common.h thr_alarm.h wqueue.h
config-win.h lf.h my_alloc.h my_bitmap.h my_getopt.h my_net.h my_sys.h my_vle.h mysql_time.h queues.h sslopt-case.h thr_lock.h
decimal.h m_ctype.h my_atomic.h my_charsets.h my_global.h my_no_pthread.h my_time.h my_xml.h mysql_version.h service_versions.h sslopt-longopts.h typelib.h
errmsg.h m_string.h my_attribute.h my_config.h my_libwrap.h my_nosys.h my_tree.h myisampack.h mysqld_error.h sha1.h sslopt-vars.h violite.h
/usr/local/lib:
drwxr-xr-x 3 root root 4096 Oct 21 10:19 .
drwxr-xr-x 11 root root 4096 Oct 21 09:38 ..
lrwxrwxrwx 1 root root 14 Oct 21 10:12 libmysql.so -> libmysql.so.16
lrwxrwxrwx 1 root root 18 Oct 21 10:11 libmysql.so.16 -> libmysql.so.16.0.0
-rw-r--r-- 1 root root 2156350 Oct 21 09:56 libmysql.so.16.0.0
-rw-r--r-- 1 root root 2539588 Oct 21 09:56 libmysqlclient.a
lrwxrwxrwx 1 root root 11 Oct 21 10:12 libmysqlclient.so -> libmysql.so
lrwxrwxrwx 1 root root 11 Oct 21 10:13 libmysqlclient_r.so -> libmysql.so
さて、次のようなものを使用して、何かを静的にコンパイルしようとすると:
gcc -static -o hello_world $(mysql_config --cflags) hello_world.c $(mysql_config --libs)
次のようなエラー メッセージが表示されます。
/usr/bin/ld: cannot find -lmysql
collect2: ld returned 1 exit status
ライブラリが正しい場所にあり、同じプラットフォームでビルドされているのに、リンカーがなぜライブラリを見つけられないのか、誰にもわかりませんか? 事前に感謝します。
編集: static フラグなしで同じコンパイル コマンドを実行すると、コンパイルは正常に動作しますが、実行時にerror while loading shared libraries: libmysql.so.16: cannot open shared object file: No such file or directory
「なぜそうなのか誰にもわかりませんか?」というメッセージが表示されます。