【问题标题】:gcc wont compile and run MySQL C librariesgcc 不会编译和运行 MySQL C 库
【发布时间】:2011-03-24 16:42:11
【问题描述】:
#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

【问题讨论】:

    标签: c gcc undefined-reference mysql


    【解决方案1】:

    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)
    

    【讨论】:

    • 感谢脚本帮助清理了一些事情,以下工作正常:“gcc -o mysql-test MySQL-Test.c -lmysqlclient” 现在测试类正在工作,我将如何移植该命令到诸如 NetBeans 之类的 IDE 中?
    • 我建议编写一个 Makefile 来自动编译应用程序。在那里你可以为 GCC 指定命令行参数。您可以在此处找到有关如何编写 makefile 的信息:delorie.com/djgpp/doc/ug/larger/makefiles.html 有很多网站可以帮助您编写自己的 makefile。
    • @codaddict 你将如何在 Windows 中执行此操作?
    【解决方案2】:

    你需要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

    【讨论】:

      【解决方案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 参数中。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            更多信息请参见http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

            【讨论】:

              【解决方案7】:

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

              希望有用...

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-06-28
                • 1970-01-01
                • 1970-01-01
                • 2019-02-06
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多