with sintaxis example create c++ mysql compiler-construction

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ó