mysql c api 怎么设置才能用呢?
一段简单的程序,网上拷的,但无法编译,
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 <stdio.h>
#include "mysql/mysql.h "
int main(int argc, char **argv)
{
MYSQL mysql;/* variation #1*/
printf( "\n\n\tCopyright Aftab Jahan Subedar\n\t\thttp://www.geocities.com/jahan.geo ");
printf( "\n\t\tjahan@geocities.com \n\t\tPhone:+88027519050\n ");
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后面加 `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
这样写了以后,源代码的 <mysql/mysql.h> 要改为 <mysql.h> ,因为在makefile中已经指明了mysql.h的位置了。