关于连接mysql数据库的编译错误

发布于 2022-10-01 13:11:40 字数 1340 浏览 9 评论 0

刚学在linux下c编程

很简单的一个程序

#include <stdio.h>;
#include <mysql.h>;

#define HOSTNAME NULL
#define USERNAME NULL
#define PASSWORD NULL
#define DATABASE NULL

MYSQL* con;

int main(int argc, char *argv[])
{
  con = mysql_init(NULL);
  mysql_real_connect(
    con,
    HOSTNAME,
    USERNAME,
    PASSWORD,
    DATABASE,
    0,
    NULL,
    0);
  mysql_close(con);
        return 0;
}

编译后出现如下错误

[root@localhost test]# gcc -o Test10  Test10.c -I/usr/include/mysql -L/usr/lib/mysql
Test10.o: In function `main':
Test10.o(.text+0x16): undefined reference to `mysql_init'
Test10.o(.text+0x37): undefined reference to `mysql_real_connect'
Test10.o(.text+0x4: undefined reference to `mysql_close'
collect2: ld returned 1 exit status

而加上 -lmysqlclient 就可以了, 这个-lmysqlclient是什么东西,还有多线程编译里也要加上-lpthread,这些参数代表了什么意思,从哪里可以找到,请问哪位朋友知道,指点一二。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹤舞 2022-10-08 13:11:40

-lmysqlclient是引用mysql的运行库,你所使用的诸如'mysql_init'函数的定义都放在里面.
-lpthread是引用POSIX的线程库,你在程序中调用的线程函数的定义都放在它里面

九八野马 2022-10-08 13:11:40

原帖由 "xa_butterfly" 发表:
-lmysqlclient是引用mysql的运行库,你所使用的诸如'mysql_init'函数的定义都放在里面.
-lpthread是引用POSIX的线程库,你在程序中调用的线程函数的定义都放在它里面

请问一下,mysqlclient,pthread这些是在哪里定义的,我在哪能看见他们的定义。

难如初 2022-10-08 13:11:40

使用ar -vt libmysqlclient.a,会列出库中包含的.o文件,依据.o文件在mysql源码包中查找相应.c文件.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文