关于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下,它包括了我刚才须要手动指定的信息。数据库

相关文章
相关标签/搜索