在ARM上构建mySQL C Connector

时间:2013-02-04 01:47:34

标签: mysql gcc ubuntu compilation arm

我已经在运行Ubuntu 10的ARM计算机上按照mySQL网站here上的说明构建了mySQL C Connector。然后我使用正确的系统链接将构建的头文件和库复制到指定的路径mysql_config --cflagsmysql_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

有没有人知道为什么我的链接器在正确的位置并且在同一平台上构建时无法找到它?先谢谢。

编辑:当我运行没有静态标志的相同编译命令时,complile工作正常,但是,在运行时我得到error while loading shared libraries: libmysql.so.16: cannot open shared object file: No such file or directory有谁知道为什么会出现这种情况?

1 个答案:

答案 0 :(得分:1)

您正在静态链接libmysql.a,但您没有这样的库。

带有后缀.so的库是动态库,带有后缀.a的库是静态库。

如果您为动态库创建了类似的符号链接,它可能会起作用:

ln -s libmysqlclient.a /usr/local/lib/libmysql.a