#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
答案 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
添加到编译行。
答案 6 :(得分:1)
也许迟到但为我工作了
如果您使用的是IDE,则应将库链接到项目中
我在ubuntu 12.4 64x上使用CodeBlocks
。要链接库,您应该转到Project - &gt;构建选项 - &gt;链接器设置并添加库。这是我的lib路径:/usr/lib/x86_64-linux-gnu/libmysqlclient.so
希望有用......