Фатальная ошибка 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