日期:2014-05-16  浏览次数:20589 次

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的位置了。