关于gcc编译使用mysql库的程序
2011-05-08 20:58
239 查看
有关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下,它包括了我刚才需要手动指定的信息。
我在这里遇到的问题是写好的程序编译不正确。
测试环境:
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下,它包括了我刚才需要手动指定的信息。
相关文章推荐
- [转]关于gcc编译使用mysql库的程序
- 在linux环境下尝试使用gcc编译一个程序,并验证-E\-S\-c选项
- 关于5.7.12Mysq 启动失败,本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止?
- Linux下使用gcc编译程序找不到库的分析和解决方法
- 使用gcc 5 编译c++11编写的程序 出现的符号找不到的链接问题。
- Linux平台下关于GCC编译及使用的方法
- 如何使用指定版本的GCC/G++来编译autotools打包的程序
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- gcc编译使用math.h的c程序
- 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库。
- Linux操作系统的简单指令及如何使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内容。
- Linux下使用GCC编译并运行第一个helloworldC++程序
- 使用gcc编译C程序的详细过程
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- 菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序
- linux下使用gcc编译运行C/C++程序
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库