2010-08-03 45 views
7
#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的测试的MySQL TEST.CGCC编译不会和运行MySQL C库

我尝试从终端执行该测试程序,但得到以下错误消息:

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

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

回答

14

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

通过--libs选项 - 连接MySQL客户端库所需的库和选项。

$ mysql_config --libs 

典型输出:
如果您使用的是IDE

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

感谢该脚本帮助清理当场打死的事情,下面的作品就好了: “的gcc -o MySQL的测试的MySQL TEST.C -lmysqlclient”现在 ,测试类的工作,我将如何端口该命令到NetBeans等IDE? – JB87 2010-08-03 13:00:54

+0

我会建议编写一个Makefile来处理自动编译应用程序。在那里你可以指定GCC的命令行参数。 您可以在这里找到关于如何编写makefile的信息:http://www.delorie.com/djgpp/doc/ug/larger/makefiles.html 有许多网站可以帮助您编写自己的makefile。 – Gui13 2010-08-03 14:36:33

+0

@codaddict你会怎么做到这一点在Windows中? – cokedude 2017-10-24 23:27:49

2

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

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

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

添加mysql库来创建您的可执行文件与选项-lmysql应该做的伎俩。

1

也许迟,但为我工作:

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

现在你可以添加到您的编译/连接线你应该将库链接到你的项目。
我在Ubuntu 12.4 64x上使用CodeBlocks。为了链接库,你应该进入项目 - >构建选项 - >链接器设置并添加库。这是我的lib路径:/usr/lib/x86_64-linux-gnu/libmysqlclient.so

希望有用...

3

对于Linux

来打开NetBeans的用途你让文件(生成文件),并添加以下行

# 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参数中。