我已经按照 mySQL 网站上的说明在运行 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
有人知道为什么我的链接器在正确的位置并且构建在同一平台上时找不到库吗?预先感谢。
编辑:当我在没有静态标志的情况下运行相同的编译命令时,编译工作正常,但是,在运行时我得到一个error while loading shared libraries: libmysql.so.16: cannot open shared object file: No such file or directory
有谁知道为什么会这样?