gcc不会编译和运行MySQL C库

时间:2010-08-03 11:53:12

标签: c gcc undefined-reference mysql

#include <my_global.h>
#include <mysql.h>

int main(int argc, char **argv)
{
  printf("MySQL client version: %s\n", mysql_get_client_info());
}
  

〜$ gcc -o mysql-test MySQL-Test.c

我试图从终端执行此测试程序,但收到以下错误消息:

/tmp/cceEmI0I.o:在函数main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info'

有什么不对?我的系统是ubuntu

7 个答案:

答案 0 :(得分:14)

MySQL附带一个名为mysql_config的特殊脚本。它为您编译MySQL客户端并将其连接到MySQL数据库服务器提供了有用的信息。

传递--libs选项 - 链接MySQL客户端库所需的库和选项。

$ mysql_config --libs

典型输出:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto

现在您可以将它添加到编译/链接行:

gcc -o mysql-test MySQL-Test.c $(mysql_config --libs)

答案 1 :(得分:4)

您需要gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz

-L/usr/local/mysql/lib替换为客户端库所在的位置(如果它不在您的libpath中)

请参阅MySql instructions for building clients

答案 2 :(得分:3)

在Linux上使用Netbeans

打开make文件(MakeFile)并添加以下行

# These are the flags that gcc requires in order to link correctly against our installed 
# client packages
MYSQL_LIBS := $(shell mysql_config --libs)

位于环境区块的正下方。

然后右键单击项目节点,选择Properties,Build并将$(MYSQL_LIBS)添加到Additional options参数。

答案 3 :(得分:2)

您没有链接到库。使用:gcc -llibrarygoeshere -o mysql-test MySQL-Test.c 有关与gcc链接的详细信息,请参阅here

答案 4 :(得分:2)

这不是编译错误。这是一个链接错误。

添加mysql库以使用选项-lmysql创建可执行文件。应该这样做。

答案 5 :(得分:2)

您忘记链接MySQL库。 尝试将-lmysql添加到编译行。

有关详细信息,请参阅http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

答案 6 :(得分:1)

也许迟到但为我工作了 如果您使用的是IDE,则应将库链接到项目中 我在ubuntu 12.4 64x上使用CodeBlocks。要链接库,您应该转到Project - &gt;构建选项 - &gt;链接器设置并添加库。这是我的lib路径:/usr/lib/x86_64-linux-gnu/libmysqlclient.so

希望有用......