【问题标题】:Can't compile C program using MariaDB on CentOS无法在 CentOS 上使用 MariaDB 编译 C 程序
【发布时间】:2016-02-21 02:59:44
【问题描述】:

我想运行连接到 mariaDB 的 C 程序,因为我已经安装了 mariaDB 版本:

 Server:            MariaDB
 Server version:        10.1.11-MariaDB MariaDB Server
 Protocol version:  10
 Connection:        Localhost via UNIX socket
 Server characterset:   latin1
 Db     characterset:   latin1
 Client characterset:   utf8
 Conn.  characterset:   utf8

但我是通过一篇文章来的

所以,我没有安装 C 连接器(由于 mysql-mariaDB 的相似性质),并从这个链接 http://zetcode.com/db/mysqlc/ 尝试了这个示例程序。

但它说:

[root@localhost Desktop]# gcc version.c -o version  `mysql_config --cflags --libs`
bash: mysql_config: command not found...
version.c:1:23: fatal error: my_global.h: No such file or directory
#include <my_global.h>
          ^
compilation terminated.

然后我尝试安装libmysqlclient-dev/libmariaclient-dev,它说没有包libmysqlclient-dev/libmariaclient-dev可用。

现在我该怎么办?

【问题讨论】:

    标签: mysql c centos mariadb mysql-connector


    【解决方案1】:

    你需要找出哪个包为你提供了mysql_config。根据我的检查,您可以通过yum whatprovides mysql_config 来完成。如果是 Arch,我得到了:

    [root@main]# pkgfile mysql_config
    extra/libmariadbclient
    

    【讨论】:

    • 我尝试使用 yum,我收到了这条消息:MariaDB-devel-10.1.11-1.el7.centos.x86_64 : MariaDB: a very fast and robust SQL database server Repo : mariadb Matched from : 文件名 : /usr/bin/mysql_config,我将 /user/bin 添加到路径,但响应与之前相同。
    • 所以 yum 为你找到了包名。你应该安装它。默认搜索/usr/bin,无需添加。
    【解决方案2】:

    尝试从MariaDB repository安装MariaDB-devel包。

    【讨论】:

      【解决方案3】:

      我的情况,编译器找不到my_global.h

      我试过了:

      $ mysql_config --include
      -I/usr/include/mysql
      

      但是,文件在/usr/include/mysql/server/my_global.h

      这行得通:

      gcc [......] `mysql_config --include`/server
      

      【讨论】:

        【解决方案4】:

        这是一个相当古老的线程,这可能已经解决了。但是,我能够在部署后使其工作: 百胜安装 mariadb-devel

        【讨论】:

          【解决方案5】:

          你应该在安装开发包后#include &lt;mysql/mysql.h&gt;。您不应直接包含&lt;my_globals.h&gt;

          您可能还对 Oracle 文档中的 MySQL Connector/C Developer Guide23.8 MySQL C API 感兴趣。

          $ sudo dnf install mariadb-devel
          ...
          

          然后:

          $ find /usr/include -name my_global.h
          /usr/include/mysql/my_global.h
          /usr/include/mysql/server/my_global.h
          
          $ cat /usr/include/mysql/my_global.h
          /* Do not edit this file directly, it was auto-generated by cmake */
          
          #warning This file should not be included by clients, include only <mysql.h>
          

          最后:

          $ find /usr/include -name mysql.h
          /usr/include/mysql/server/mysql.h
          /usr/include/mysql/mysql.h
          

          还有一个测试:

          $ cat test.c
          #include <mysql/mysql.h>
          
          int main(int argc, char* argv[])
          {
              return 0;
          }
          

          还有:

          $ gcc -Wall test.c -o test.exe -lmysqlclient
          

          【讨论】:

            猜你喜欢
            • 2015-04-14
            • 1970-01-01
            • 2019-04-25
            • 1970-01-01
            • 2023-04-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多