c++ - sintaxis - error fatal mysql.h: ningún archivo o directorio durante la compilación
mysql semicolon (3)
Tengo el siguiente código
#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);
}
cuando intento compilarlo usando
gcc mysqldb.c -o mysql -I/usr/include/mysql -lmysqlclient
me sale un error que dice fatal error mysql.h: No existe tal archivo o directorio. ¿Cómo puedo compilar y ejecutar con éxito el código?
Compruebe que /usr/include/mysql/mysql.h
existe. Si ha instalado los archivos de encabezado en otro lugar (digamos /opt/mysql/include
), agregue esa ubicación con -I/opt/mysql/include.
No sé si hay alguna variación en su sistema operativo. El mío es Arch Linux, y he instalado mariaDB . Dentro del paquete, hay un programa llamado ''mysql_config'' que puede proporcionar la forma correcta de compilar su programa. Por runnig
$ 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]
puedes ver las banderas de control del programa. Con su programa, utilicé lo siguiente:
$gcc main.c -o main $(mysql_config --libs --cflags)
y luego, ejecutando el nuevo programa ''main''
$./main
MySQL client version: 10.0.17-MariaDB
que claramente funcionó!
Entonces, estoy seguro de que hay algunas otras maneras de hacerlo, pero ahora esto está bien para mí.
Propina
Ejecuta el comando
$mysql_config --libs --cflags
para ver las banderas exactas que produce mysql_config. ¡Disfrutar!
Hoy encuentro el mismo error, resulta que me olvidé de instalar el paquete libmysqlclient-dev
. Después de que lo instale con
sudo apt install libmysqlclient-dev
el error desapareció