2012-11-04 74 views
0

我记得,多年前当我开始使用mySQL时,设置事情“就这样”是一场噩梦,因此找到了这些库(特别是mySQL库!)。就我而言,我相信ldconfig是将事情排除在外的工具。 Flash前进到2012年 - 刚刚安装了一个新的“主”系统,其中包括64位Ubuntu 12.04,并且我正在确保我的所有源代码都将被编译。想象一下,我惊讶于我回到了libmysqlclient的同一条船上。ld找不到libmysqlclient

我的网页搜索已经透露了很多尝试,没有任何帮助。一路走来,我发现了这个招数:gcc ... mysql_config --cflags --libs - 非常好,但是没有帮助。

因此,举例来说,结果:

gcc -D_FILE_OFFSET_BITS=64 `mysql_config --cflags --libs` \ 
      -o check-my-ip \ 
      -s check-my-ip.c ../common/ini-file.c 

是从mysql_config --cflags --libs

/tmp/ccxAgCqr.o: In function `updateTables': 
/usr/local/src/check-my-ip/check-my-ip.c:373: undefined reference to `mysql_init' 
/usr/local/src/check-my-ip/check-my-ip.c:374: undefined reference to `mysql_real_connect' 
/usr/local/src/check-my-ip/check-my-ip.c:381: undefined reference to `mysql_error' 
/usr/local/src/check-my-ip/check-my-ip.c:381: undefined reference to `mysql_errno' 
/usr/local/src/check-my-ip/check-my-ip.c:397: undefined reference to `mysql_field_count' 
/usr/local/src/check-my-ip/check-my-ip.c:398: undefined reference to `mysql_use_result' 
/usr/local/src/check-my-ip/check-my-ip.c:399: undefined reference to `mysql_fetch_row' 
/usr/local/src/check-my-ip/check-my-ip.c:419: undefined reference to `mysql_free_result' 
/usr/local/src/check-my-ip/check-my-ip.c:422: undefined reference to `mysql_field_count' 
/usr/local/src/check-my-ip/check-my-ip.c:429: undefined reference to `mysql_close' 
/tmp/ccxAgCqr.o: In function `myQuery': 
/usr/local/src/check-my-ip/check-my-ip.c:439: undefined reference to `mysql_query' 
/usr/local/src/check-my-ip/check-my-ip.c:441: undefined reference to `mysql_error' 
/tmp/ccxAgCqr.o: In function `indexExists': 
/usr/local/src/check-my-ip/check-my-ip.c:464: undefined reference to `mysql_field_count' 
/usr/local/src/check-my-ip/check-my-ip.c:465: undefined reference to `mysql_use_result' 
/usr/local/src/check-my-ip/check-my-ip.c:466: undefined reference to `mysql_fetch_row' 
/usr/local/src/check-my-ip/check-my-ip.c:471: undefined reference to `mysql_free_result' 
collect2: ld returned 1 exit status 
make: *** [check-my-ip] Error 1 

输出是:

-I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g 
-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -ldl 

这些都是一些其他可能有助于诊断的命令:

$ ldconfig -p | grep的MySQL的

libmysqlclient.so.18 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 
    libmysqlclient.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libmysqlclient.so 

$ ls -l /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 
lrwxrwxrwx 1 root root 24 Jun 11 10:21 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18 -> libmysqlclient.so.18.0.0 
$ ls -l /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 
-rw-r--r-- 1 root root 3408136 Jun 11 10:21 /usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0 

我没有一个aptitude search libmysql并指出有37行,其中大部分具有i386的指定(如:libmysqld-PIC:I386), 和我注意到有零线与x86_64的(或-64);这是问题的一部分吗? (这里是指那些37线)

$ aptitude search libmysql 
p libmysql++-dev       - MySQL C++ library bindings (development) 
p libmysql++-dev:i386      - MySQL C++ library bindings (development) 
p libmysql++-doc       - MySQL C++ library bindings (documentation and exampl 
p libmysql++3        - MySQL C++ library bindings (runtime) 
p libmysql++3:i386       - MySQL C++ library bindings (runtime) 
p libmysql-cil-dev       - MySQL database connector for CLI 
p libmysql-diff-perl      - module for comparing the table structure of two MySQ 
p libmysql-java        - Java database (JDBC) driver for MySQL 
p libmysql-ocaml       - OCaml bindings for MySql 
p libmysql-ocaml:i386      - OCaml bindings for MySql 
p libmysql-ocaml-dev      - OCaml bindings for MySql 
p libmysql-ocaml-dev:i386     - OCaml bindings for MySql 
v libmysql-ocaml-dev-dnim6:i386    - 
v libmysql-ocaml-dev-jygp6     - 
v libmysql-ocaml-dnim6:i386     - 
v libmysql-ocaml-jygp6      - 
p libmysql-ruby        - Transitional package for ruby-mysql 
v libmysql-ruby:i386      - 
p libmysql-ruby1.8       - Transitional package for ruby-mysql 
v libmysql-ruby1.8:i386      - 
p libmysql-ruby1.9.1      - Transitional package for ruby-mysql 
v libmysql-ruby1.9.1:i386     - 
p libmysql6.4-cil       - MySQL database connector for CLI 
i libmysqlclient-dev      - MySQL database development files 
p libmysqlclient-dev:i386     - MySQL database development files 
v libmysqlclient15-dev      - 
v libmysqlclient15-dev:i386     - 
i A libmysqlclient18       - MySQL database client library 
p libmysqlclient18:i386      - MySQL database client library 
p libmysqlcppconn-dev      - MySQL Connector for C++ (development files) 
p libmysqlcppconn-dev:i386     - MySQL Connector for C++ (development files) 
p libmysqlcppconn5       - MySQL Connector for C++ (library) 
p libmysqlcppconn5:i386      - MySQL Connector for C++ (library) 
i libmysqld-dev        - MySQL embedded database development files 
p libmysqld-dev:i386      - MySQL embedded database development files 
p libmysqld-pic        - MySQL database development files 
p libmysqld-pic:i386      - MySQL database development files 

下面是内容/ usr/lib中/ MySQL的

$ find /usr/lib/mysql 
/usr/lib/mysql 
/usr/lib/mysql/plugin 
/usr/lib/mysql/plugin/qa_auth_client.so 
/usr/lib/mysql/plugin/auth.so 
/usr/lib/mysql/plugin/qa_auth_server.so 
/usr/lib/mysql/plugin/semisync_master.so 
/usr/lib/mysql/plugin/libdaemon_example.so 
/usr/lib/mysql/plugin/ha_example.so 
/usr/lib/mysql/plugin/adt_null.so 
/usr/lib/mysql/plugin/auth_test_plugin.so 
/usr/lib/mysql/plugin/auth_socket.so 
/usr/lib/mysql/plugin/qa_auth_interface.so 
/usr/lib/mysql/plugin/semisync_slave.so 
/usr/lib/mysql/plugin/mypluglib.so 

我不知道还有什么尝试,别的地方看看,并希望任何指针。

+0

这是在长大,一遍又一遍的问题,而解决的办法就是把你想要在命令行上_last_链接所有的图书馆! –

+0

*不以':i386'结尾的软件包是系统默认体系结构“amd64”的软件包。只有非默认架构的软件包才会将架构显示为软件包名称的一部分。 – Wyzard

回答

5

连接标志应始终是最后一个指定:

gcc -D_FILE_OFFSET_BITS=64 `mysql_config --cflags` \ 
     -o check-my-ip \ 
     -s check-my-ip.c ../common/ini-file.c \ 
     `mysql_config --libs` 
+0

感谢您的耐心等待。我可以发誓我已经尝试过,但唉...现在可以工作。非常抱歉,这个新手问题! – Dennis