Фатальная ошибка mysql.h: нет такого файла или каталога во время компиляции

У меня есть следующий код

#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: такого файла или каталога нет. Как я могу успешно скомпилировать и запустить код

4 ответа

Решение

Проверь это /usr/include/mysql/mysql.h существует. Если вы установили заголовочные файлы в другом месте (скажем, /opt/mysql/include), добавьте это местоположение с помощью -I/opt/mysql/include.

Сегодня сталкиваюсь с такой же ошибкой, оказывается, что я забываю установить пакет libmysqlclient-dev, После того, как я установил его с

sudo apt install libmysqlclient-dev

ошибка ушла.

Я не знаю, есть ли какие-либо изменения в вашей операционной системе. У меня есть 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. Наслаждайтесь!

У меня была такая же проблема, но, к счастью, команда sudo apt install libmysqlclient-dev как указано пользователем 4713908 исправил.

Я должен был указать путь в моем make-файле как

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

Я использую Kali Linux

Другие вопросы по тегам