天天看點

C語言連接配接MYSQL問題

寫了一個連接配接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,如需轉載請自行聯系原作者