当前位置: 技术问答>linux和unix
mysql c api 怎么设置才能用呢?
来源: 互联网 发布时间:2016-01-07
本文导语: 一段简单的程序,网上拷的,但无法编译, FC5的机子装了mysql5,我在FC5的安装盘找到了所有mysql*rpm,全部装上去了, 可编译一个简单的程序时出现下面的错误,不知还需装些什么? #gcc test.c test.c: 在函数 ‘main...
一段简单的程序,网上拷的,但无法编译,
FC5的机子装了mysql5,我在FC5的安装盘找到了所有mysql*rpm,全部装上去了,
可编译一个简单的程序时出现下面的错误,不知还需装些什么?
#gcc test.c
test.c: 在函数 ‘main’ 中:
test.c:19: 警告:隐式声明与内建函数 ‘exit’ 不兼容
/tmp/ccOfwWMG.o: In function `main':test.c:(.text+0x37):对‘mysql_init’未定义的 引用
:test.c:(.text+0x63):对‘mysql_close’未定义的引用
collect2: ld 返回 1
代码如下:
#include
#include "mysql/mysql.h"
int main(int argc, char **argv)
{
MYSQL mysql;/* variation #1*/
printf("nntCopyright Aftab Jahan Subedarntthttp://www.geocities.com/jahan.geo");
printf("nttjahan@geocities.com nttPhone:+88027519050n");
if(mysql_init(&mysql)==NULL)
{
printf("nFailed to initate MySQL connection");
exit(1);
}
/*now you can call any MySQL API function you like*/
mysql_close(&mysql);
}
FC5的机子装了mysql5,我在FC5的安装盘找到了所有mysql*rpm,全部装上去了,
可编译一个简单的程序时出现下面的错误,不知还需装些什么?
#gcc test.c
test.c: 在函数 ‘main’ 中:
test.c:19: 警告:隐式声明与内建函数 ‘exit’ 不兼容
/tmp/ccOfwWMG.o: In function `main':test.c:(.text+0x37):对‘mysql_init’未定义的 引用
:test.c:(.text+0x63):对‘mysql_close’未定义的引用
collect2: ld 返回 1
代码如下:
#include
#include "mysql/mysql.h"
int main(int argc, char **argv)
{
MYSQL mysql;/* variation #1*/
printf("nntCopyright Aftab Jahan Subedarntthttp://www.geocities.com/jahan.geo");
printf("nttjahan@geocities.com nttPhone:+88027519050n");
if(mysql_init(&mysql)==NULL)
{
printf("nFailed to initate MySQL connection");
exit(1);
}
/*now you can call any MySQL API function you like*/
mysql_close(&mysql);
}
|
你这样编译试试:
gcc -lmysqlclient test.c
gcc -lmysqlclient test.c
|
可能是没有链接库的原因了
|
gcc后面加 `mysql_config --.......`自己去看吧
|
没办法的,不能说什么板块都有很多高手;
我们不懂的只能一起讨论,一起进步,总是希望高手,那高手当初的时候怎么办啊
所以我觉得无论是自己解决问题了,还是别人帮忙解决了,最好能把解决方式贴出来,这样别人就能少走弯路。
我们不懂的只能一起讨论,一起进步,总是希望高手,那高手当初的时候怎么办啊
所以我觉得无论是自己解决问题了,还是别人帮忙解决了,最好能把解决方式贴出来,这样别人就能少走弯路。
|
应当把几个mySQL的静态库链接上,gcc 里面要加上-lib选项.
|
主要看libmysqlclient.a在那个目录下,例如我的在/usr/local/mysql/lib下,相应的include 在/usr/local/mysql/include下,那么makefile可以这样写:
CC=gcc
INCLUDES = -I/usr/local/mysql/include
LIBS = -L/usr/local/mysql/lib -lmysqlclient -lz
example:example.o
CC -o -g example example.o $(LIBS)
example.o:example.c
CC $(INCLUDES) -c -g example.c
这样写了以后,源代码的要改为,因为在makefile中已经指明了mysql.h的位置了。
CC=gcc
INCLUDES = -I/usr/local/mysql/include
LIBS = -L/usr/local/mysql/lib -lmysqlclient -lz
example:example.o
CC -o -g example example.o $(LIBS)
example.o:example.c
CC $(INCLUDES) -c -g example.c
这样写了以后,源代码的要改为,因为在makefile中已经指明了mysql.h的位置了。