转载 用C连接MySQL数据库程序的编译问题

我是用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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值