转载 用C连接MySQL数据库程序的编译问题
2010-07-08 17:46
225 查看
我是用C API连接的mysql数据库。但是,编好程序后我不会编译。
方法一:gcc test.c -o test -I/user/include/mysql -L/user/lib/mysql -lmysqlclient
我试了一下,提示找不到mysql.h。
分析:
/user/include/mysql:全是.h文件,应该对应编译阶段
/user/lib/mysql:是静态库和动态库,应该与上面的.h文件对应,用于连接阶段
libmysqlclient.a:估计也是用于连接的,不知道为什么独立于/user/lib/mysql再来一个静态库?
方法二:gcc test.c -o test $(mysql_config --cflags) $(mysql_config --libs)
成功!!!
分析1:
在终端中输入:mysql_config,可看到对应关系:
--cflags [-I/usr/include/mysql -DBIG_JOINS=1 -fPIC]
--libs [-Wl,-Bsymbolic-functions -L/usr/lib/mysql -lmysqlclient]
分析2:
尝试先生成目标文件再连接。
有三个程序:test1.c test2.c test3.c ,其中test1.c用于连接mysql。
单独编译:
gcc -c test1.c -o a.o -I/user/include/mysql 提示错误!
gcc -c test1.c -o a.o $(mysql_config --cflags) 通过!
gcc -c test2.c -o b.o
gcc -c test3.c -o c.o
连接:
gcc a.o b.o c.o -o test -L/user/lib/mysql -lmysqlclient 通过!
gcc a.o b.o c.o -o test -lmysqlclient 通过!这可能是因为我的程序中没用到-L/user/lib/mysql中的内容。
gcc a.o b.o c.o -o test $(mysql_config --libs) 通过!
最终分析:方法一中, -I/user/include/mysql 是不好用的,后面的-L/user/lib/mysql -lmysqlclient好用。方法二是好用的。但两中方法有对应关系,是不是我哪里没设置,或少输了条语句什么的?还有libmysqlclient.a是怎么回事?为什么是单独的?
转自http://forum.ubuntu.org.cn/viewtopic.php?f=70&t=177644&start=0
方法一:gcc test.c -o test -I/user/include/mysql -L/user/lib/mysql -lmysqlclient
我试了一下,提示找不到mysql.h。
分析:
/user/include/mysql:全是.h文件,应该对应编译阶段
/user/lib/mysql:是静态库和动态库,应该与上面的.h文件对应,用于连接阶段
libmysqlclient.a:估计也是用于连接的,不知道为什么独立于/user/lib/mysql再来一个静态库?
方法二:gcc test.c -o test $(mysql_config --cflags) $(mysql_config --libs)
成功!!!
分析1:
在终端中输入:mysql_config,可看到对应关系:
--cflags [-I/usr/include/mysql -DBIG_JOINS=1 -fPIC]
--libs [-Wl,-Bsymbolic-functions -L/usr/lib/mysql -lmysqlclient]
分析2:
尝试先生成目标文件再连接。
有三个程序:test1.c test2.c test3.c ,其中test1.c用于连接mysql。
单独编译:
gcc -c test1.c -o a.o -I/user/include/mysql 提示错误!
gcc -c test1.c -o a.o $(mysql_config --cflags) 通过!
gcc -c test2.c -o b.o
gcc -c test3.c -o c.o
连接:
gcc a.o b.o c.o -o test -L/user/lib/mysql -lmysqlclient 通过!
gcc a.o b.o c.o -o test -lmysqlclient 通过!这可能是因为我的程序中没用到-L/user/lib/mysql中的内容。
gcc a.o b.o c.o -o test $(mysql_config --libs) 通过!
最终分析:方法一中, -I/user/include/mysql 是不好用的,后面的-L/user/lib/mysql -lmysqlclient好用。方法二是好用的。但两中方法有对应关系,是不是我哪里没设置,或少输了条语句什么的?还有libmysqlclient.a是怎么回事?为什么是单独的?
转自http://forum.ubuntu.org.cn/viewtopic.php?f=70&t=177644&start=0
相关文章推荐
- 关于编译android程序,期待模拟器,中文路径的问题【转载】
- 解决WIN7编译出的程序无法连接其他数据库的问题。
- C#连接MySql数据库出现的编译问题
- 手动编译连接汇编程序遇到的问题
- 转载】MySQL数据库连接超时(wait_timeout)问题的处理
- 解决Java程序连接mysql数据库出现CommunicationsException: Communications link failure错误的问题
- 编译操作mysql数据库的C程序时的连接库错误
- Linux下编写C++程序连接mysql数据库编译时指定头、库
- 转载VS2008 编译出来的exe文件,运行遇到“应用程序配置不正确,程序无法启动”的问题
- Ubuntu 下C程序连接mysql 编译问题
- php连接MySQL数据库的一些问题
- 解析Qt4.7.3编译MySql数据库驱动,存中文乱码、过滤转义字符问题
- 解决(Oracle)ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接 问题
- 解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!
- 关于VC6中基于对话框的程序,往Combox 添加一个CComboBox变量,然后程序编译运行,窗口不出现的问题
- Raspbian Ubuntu下安装OpenCV2.4.9的详细过程及碰到的问题和第一次程序的编译调试
- c/c++程序编译连接过程
- linux下gcc编译c++程序连接问题
- centos5.8 x86_64 gcc升级到4.4.7解决了编译32位程序的问题
- 对于Intel汇编语言程序设计中程序编译出现问题及解决方案汇总