寫了一個連接配接MYSQL的C程式,出現以下錯誤資訊:
cc -I/usr/include/mysql -Wall -g -lmysqlclient -g -L/usr/lib connect1.c -o connect1
/tmp/ccykDQvd.o: In function `main':
/home/jie/Beginning Linux Program/ch08/connect1.c:9: undefined reference to `mysql_init'
/home/jie/Beginning Linux Program/ch08/connect1.c:15: undefined reference to `mysql_real_connect'
/home/jie/Beginning Linux Program/ch08/connect1.c:24: undefined reference to `mysql_close'
collect2: ld 傳回 1
make: *** [connect1] 錯誤 1
從出錯資訊看,是連結庫找不到的問題。
是以檢視了 /usr/lib 下的庫檔案發現:
[jie@jie:/usr/lib]$ls libmysqlclient*
libmysqlclient.a libmysqlclient_r.so libmysqlclient_r.so.16.0.0 libmysqlclient.so.16
libmysqlclient_r.a libmysqlclient_r.so.16 libmysqlclient.so libmysqlclient.so.16.0.0
連結庫路徑沒錯,庫檔案也有,怎麼就找不到呢?
附上簡單源碼:
01.#include<stdlib.h>
02.#include <stdio.h>
03.
04.#include "mysql.h"
05.
06.int main(int argc, char *argv[]) {
07. MYSQL *conn_ptr;
08.
09. conn_ptr = mysql_init(NULL);
10. if (!conn_ptr) {
11. fprintf(stderr, "mysql_init failed\n");
12. return EXIT_FAILURE;
13. }
14.
15. conn_ptr = mysql_real_connect(conn_ptr, "localhost", "jie", "edgeyang",
16. "children", 0, NULL, 0);
17.
18. if (conn_ptr) {
19. printf("Connection success\n");
20. } else {
21. printf("Connection failed\n");
22. }
23.
24. mysql_close(conn_ptr);
25.
26. return EXIT_SUCCESS;
27.}
複制代碼另外,使用的系統剛更新為UBUNTU 11.10,MYSQL 版本資訊如下:
Server version 5.1.58-1ubuntu1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 5 hours 41 min 40 sec
在系統更新之前,同樣的程式是可以連接配接到MYSQL的!
本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/772302,如需轉載請自行聯系原作者