關於gcc編譯使用mysql庫的程序

有關c語言操做mysql數據庫的源程序在這裏就不列了,網上隨手能夠抓到一把。mysql

我在這裏遇到的問題是寫好的程序編譯不正確。linux

測試環境:
inter pentium dual CPU
fedora 6,linux kernel 2.6.18,32位平臺
gcc 4.1.1-30
mysql-devel-5.0.22-2.1
這樣的平臺下個人mysql.h位於/usr/include/mysql/,相應的lib位於/usr/lib/mysqlsql

研究後,發現下邊的兩種方法都可以編譯經過
方法1:
gcc -c mysqltest.c
gcc -o mysqltest mysqltest.o -L/usr/lib/mysql -lmysqlclient
若是源程序的頭文件寫成#include <mysql.h>,第一步會提示錯誤,沒法找到mysql.h,緊跟着一堆的函數未聲明,由於mysql.h位於/usr/include/mysql/,因此應該寫爲#include <mysql/mysql.h>(其實寫爲#include <mysql.h>也可,後邊說明),這樣就能夠了。
第二步中-L參數指明瞭庫文件的位置,-l參數指明瞭要使用的庫文件,這個庫文件就是/usr/lib/mysql/libmysqlclient.so。
不要奇怪爲何參數中指明的是mysqlclient,而庫文件其實是libmysqlclient.so,其實gcc就是這樣,-l參數後邊緊跟的庫名是實際的庫名去掉lib和.so後的部分,全部的庫名都是lib***.so,由於庫文件的版本問題(我想是的),lib***.so大可能是一個符號連接,就像這裏的libmysqlclient.so其實是同目錄下的libmysqlclient.so.15.0.0的連接。
方法2:
gcc mysqltest.c -o mysqltest `mysql_config --cflags --libs`
注意不是單引號,數字鍵1左邊的。
頭文件無所謂寫成#include <mysql.h>或者#include <mysql/mysql.h>,也無需指定須要的mysql庫和路徑。mysql_config會全盤負責,這個腳本文件在/usr/lib/mysql下,它包括了我剛纔須要手動指定的信息。數據庫

相關文章
相關標籤/搜索