关于gcc编译使用mysql库的程序

有关c语言操作mysql数据库的源程序在这里就不列了,网上随手可以抓到一把。

我在这里遇到的问题是写好的程序编译不正确。

测试环境:
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/mysql

研究后,发现下边的两种方法均可以编译通过
方法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下,它包括了我刚才需要手动指定的信息。

你可能感兴趣的:(c,mysql,数据库,职场,休闲)