编译操作mysql数据库的C程序时的连接库错误

本文介绍了一段使用CAPI操作MySQL数据库的C语言代码,并记录了在编译过程中遇到的问题及解决方法。作者尝试了两种不同的编译命令,最终通过直接链接库文件的方式解决了编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下为使用C API写的操作数据库school的程序,保存文件名为mysql.c。

#include <stdio.h>

#include <string.h>

#include <mysql.h>

int main()

{

 MYSQL mysql;

 MYSQL_RES *res;

 MYSQL_ROW row;

 char sql[50];

 int t;

 sprintf(sql,"select*from teacher");

 mysql_init(&mysql); 

 if(!mysql_real_connect(&mysql,"localhost","root","","school",0,NULL,0))

         printf("/nconnecting database error: %s/n",mysql_error(&mysql));

 else

         printf("/nconnecting database success!/n");

 t= mysql_real_query(& mysql, sql, (unsigned int)strlen(sql));

 if(t)

         printf("query error: %s/n",mysql_error(&mysql));

 else

 {

         res = mysql_store_result(&mysql);

         while(row = mysql_fetch_row(res))

         {

                for(t = 0; t < mysql_num_fields(res); t++)

                              printf("%s",row[t]);

                 printf("/n");

         }

 }

 printf("release the space of the result set.../n");

 mysql_free_result(res);

 mysql_close(&mysql); 

 printf("sql errror! %s/n",mysql_error(&mysql)); 

 return 0;

}

我使用下列命令进行编译:

gcc –o mysql mysql.c -I /root/Software/mysql/include/mysql -L /usr/lib –lmysqlclient,

但是却出现了连接错误,错误代码如下:

/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status。

然后我改变了编译的参数,使用如下命令进行编译:

gcc -o mysql mysql.c /usr/lib/mysql/libmysqlclient.so.15  -I  /root/Software/mysql/include/mysql
也就是说把库文件当做源文件使用就可以了。

我也不知道是什么原因,按理说第一种方法是可以的。我在网上看到有人说可能是mysql的库做的有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值