【问题标题】:fatal error mysql.h:No such file or directory during compilation致命错误mysql.h:编译期间没有这样的文件或目录
【发布时间】:2014-01-03 17:48:18
【问题描述】:

我有以下代码

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

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

  exit(0);
}

当我尝试使用它编译时

gcc mysqldb.c -o mysql -I/usr/include/mysql -lmysqlclient 

我收到一条错误消息,说致命错误 mysql.h:没有这样的文件或目录。我怎样才能成功编译和运行代码

【问题讨论】:

    标签: c++ mysql compiler-construction


    【解决方案1】:

    我不知道您的操作系统是否有一些变化。我的是 Arch Linux,我已经安装了mariaDB。在包中,有一个名为“mysql_config”的程序,它可以提供正确的编译程序的方法。通过运行

    $ mysql_config --help
    Usage: /usr/bin/mysql_config [OPTIONS]
    Options:
        --cflags         [-I/usr/include/mysql]
        --include        [-I/usr/include/mysql]
        --libs           [-L/usr/lib -lmysqlclient -lpthread -lz -lm -lssl   -lcrypto -ldl]
        --libs_r         [-L/usr/lib -lmysqlclient_r -lpthread -lz -lm -lssl -lcrypto -ldl]
        --plugindir      [/usr/lib/mysql/plugin]
        --socket         [/run/mysqld/mysqld.sock]
        --port           [0]
        --version        [10.0.17]
        --libmysqld-libs [-L/usr/lib -lmysqld]
        --variable=VAR   VAR is one of:
                pkgincludedir [/usr/include/mysql]
                pkglibdir     [/usr/lib]
                plugindir     [/usr/lib/mysql/plugin]
    

    你可以看到程序的控制标志。在您的程序中,我使用了以下内容:

    $gcc main.c -o main $(mysql_config --libs --cflags)
    

    然后,通过运行新程序'main'

    $./main
    MySQL client version: 10.0.17-MariaDB
    

    这显然成功了!

    所以,我确信还有其他一些方法可以做到这一点,但现在这对我来说没问题。

    提示

    运行命令

    $mysql_config --libs --cflags
    

    查看 mysql_config 生成的确切标志。享受吧!

    【讨论】:

      【解决方案2】:

      我今天遇到同样的错误,原来我忘记安装包libmysqlclient-dev。在我安装它之后

      sudo apt install libmysqlclient-dev
      

      错误消失了。

      【讨论】:

      • 令人惊奇的是这不是其他任何地方(尤其是官方文档...)
      • 救了我的命。在过去的 2 个小时里一直在拉我的头发。
      【解决方案3】:

      检查/usr/include/mysql/mysql.h 是否存在。如果您在其他地方安装了header files(比如/opt/mysql/include),请在该位置添加-I/opt/mysql/include.

      【讨论】:

        【解决方案4】:

        我有同样的问题,但幸运的是命令 sudo apt install libmysqlclient-dev 指定为 user4713908 已修复。

        我必须将 makefile 中的路径指定为

        gcc -o database1 chapter5_1.c -I/usr/include/mysql
        

        我正在使用 Kali Linux

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 1970-01-01
          • 2022-06-19
          • 1970-01-01
          相关资源
          最近更新 更多