的mysql.h文件无法找到(mysql.h file can't be found)

2019-07-19 00:18发布

我试图安装在Ubuntu 12.04 C ++和MySQL之间的连接。 我已经安装的MySQL客户端,MySQL的服务器,libmysqlclient15-dev的,的libmysql ++ - 开发。 但是当我尝试编译我得到了错误代码: mysql.h there is no such file 。 我看着在文件夹中,还有的mysql.h文件,我不明白为什么它不能找到它。 这里是我的代码:

 /* Simple C program that connects to MySQL Database server*/
    #include <mysql.h>
    #include <stdio.h>

    main() {
      MYSQL *conn;
      MYSQL_RES *res;
      MYSQL_ROW row;

      char *server = "localhost";
      char *user = "root";
      //set the password for mysql server here
      char *password = "*********"; /* set me first */
      char *database = "Real_flights";

      conn = mysql_init(NULL);

      /* Connect to database */
      if (!mysql_real_connect(conn, server,
            user, password, database, 0, NULL, 0)) {
          fprintf(stderr, "%s\n", mysql_error(conn));
          exit(1);
      }

      /* send SQL query */
      if (mysql_query(conn, "show tables")) {
          fprintf(stderr, "%s\n", mysql_error(conn));
          exit(1);
      }

      res = mysql_use_result(conn);

      /* output table name */
      printf("MySQL Tables in mysql database:\n");
      while ((row = mysql_fetch_row(res)) != NULL)
          printf("%s \n", row[0]);

      /* close connection */
      mysql_free_result(res);
      mysql_close(conn);
    }

它的工作,但现在我面临的另一个错误,如:

mysql.c: In function ‘main’:
mysql.c:21: warning: incompatible implicit declaration of built-in function ‘exit’
mysql.c:27: warning: incompatible implicit declaration of built-in function ‘exit’
/tmp/ccinQBp8.o: In function `main':
mysql.c:(.text+0x3e): undefined reference to `mysql_init'
mysql.c:(.text+0x5e): undefined reference to `mysql_real_connect'
mysql.c:(.text+0x70): undefined reference to `mysql_error'
mysql.c:(.text+0xa5): undefined reference to `mysql_query'
mysql.c:(.text+0xb7): undefined reference to `mysql_error'
mysql.c:(.text+0xe7): undefined reference to `mysql_use_result'
mysql.c:(.text+0x11c): undefined reference to `mysql_fetch_row'
mysql.c:(.text+0x133): undefined reference to `mysql_free_result'
mysql.c:(.text+0x141): undefined reference to `mysql_close'
collect2: ld returned 1 exit status

Answer 1:

mysql.h从文件libmysqlclient-dev Ubuntu的软件包位于/usr/include/mysql/mysql.h

这不是编译器标准的搜索路径,但是/usr/include是。

您通常会使用mysql.h头在你的代码是这样的:

#include <mysql/mysql.h>

如果你不想指定目录中的源偏移,可以通过-I标志GCC(如果这是你使用的是什么)来指定一个额外的搜索包含目录,那么你就不会需要更改现有的代码。

例如。

gcc -I/usr/include/mysql ...


Answer 2:

只是使用

$ apt-get install libmysqlclient-dev 

它会自动拉最新libmysqlclient18-dev的

我已经看到了旧版本的libmysqlclient-dev的(如15)的放mysql.h中的怪异的地方例如,/ usr /本地/包括等。

否则,只是做了

$ find /usr/ -name 'mysql.h' 

并把你的文件夹路径mysql.h与-I标志在你的make文件。 不干净,反而会工作。



Answer 3:

为CentOS / RHEL:

yum install mysql-devel -y


Answer 4:

你可能不包括MySQL的路径头,可以在/ usr / include目录/ MySQL的发现,在几个unix系统,我认为。 请参阅这篇文章 ,它可能是有益的。

顺便说一句,与问题相关的那家伙以上,约syntastic配置。 人们可以在下面添加到您的〜/ .vimrc:

let b:syntastic_c_cflags = '-I/usr/include/mysql'

您可以随时查询维基页面 GitHub上的开发者。 请享用!



Answer 5:

你必须让编译器知道在哪里的mysql.h文件中可以找到。 这可以通过在编译之前给路径头完成。 在IDE中,你有一个设置,你可以给这些路径。

此链接给你使用什么样的选择,而编译更多信息。

你的第二个问题 ,您需要链接库。 链接器需要知道库文件是对你使用MySQL的函数的实现。

此链接提供了关于如何链接库的更多信息。



Answer 6:

我想你可以试试这个GCC -I / usr / include目录/ MySQL的 * .c -L / usr / lib中/ MySQL的-lmysqlclient -o *



Answer 7:

对于那些谁正在使用Eclipse IDE中。

MySQL客户端MySQL服务器MySQL的任何开发库一起安装完整的MySQL后,

你需要告诉Eclipse IDE有关以下

  • 在哪里可以找到的mysql.h
  • 在哪里可以找到的libmysqlclient
  • 路径 搜索 的libmysqlclient

这里是你如何去了解它。

要添加的mysql.h

1。 GCC C编译器- >包括- >包含路径(-l),然后单击+和路径添加到您的mysql.h在我的情况是/ usr / include目录/ MySQL的

要添加mysqlclient库和搜索路径mysqlclient库看到步骤34。

2。 GCCÇ链接- >库- >库(-l),然后点击+添加mysqlcient

3。 GCCÇ链接- >库- >库搜索路径(-L),然后点击+添加搜索路径 mysqlcient。 在我的情况下,它是在/ usr / lib64下/ mysql的 ,因为我使用的是64位Linux操作系统和一个64位的MySQL数据库。

否则,如果您使用的是32位Linux操作系统 ,你会发现这是在/ usr / lib中/ MySQL的发现



文章来源: mysql.h file can't be found