2012-11-04 108 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