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-test MySQL-Test.c

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

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

怎么了?我的系统是ubuntu

4

7 回答 7

16

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)
于 2010-08-03T12:00:58.447 回答
4

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

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

请参阅有关构建客户端的 MySql说明。

于 2010-08-03T11:56:19.837 回答
3

在 Linux 上使用 Netbeans

打开你的制作文件(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 参数。

于 2014-08-21T07:53:46.257 回答
2

您没有链接到库。使用:有关与 gcc 链接的更多信息,gcc -llibrarygoeshere -o mysql-test MySQL-Test.c 请参见此处。

于 2010-08-03T11:55:46.600 回答
2

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

添加 mysql 库以使用选项创建可执行文件-lmysql应该可以解决问题。

于 2010-08-03T11:56:51.780 回答
2

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

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

于 2010-08-03T11:57:48.513 回答
1

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

希望有用...

于 2013-11-04T07:53:18.737 回答