2010-08-03 19 views
7
#include <my_global.h> 
#include <mysql.h> 

int main(int argc, char **argv) 
{ 
    printf("MySQL client version: %s\n", mysql_get_client_info()); 
} 

~ $ gcc -o mysql-test-MySQL Test.cgcc suele compilar y ejecutar las bibliotecas MySQL C

im tratando de ejecutar este programa de prueba del terminal, pero conseguir el siguiente mensaje de error :

/tmp/cceEmI0I.o: En función de main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info'

lo que está mal? mi sistema es ubuntu

Respuesta

14

MySQL viene con un script especial llamado mysql_config. Le proporciona información útil para compilar su cliente MySQL y conectarlo al servidor de base de datos MySQL.

Opción Pase --libs - Se necesitan bibliotecas y opciones para enlazar con la biblioteca del cliente MySQL.

$ mysql_config --libs 

de salida típica:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto 

ya se puede añadir esto a la línea de compilación/enlace:

gcc -o mysql-test MySQL-Test.c $(mysql_config --libs) 
+0

gracias ese guión ayudaron a aclarar las cosas, las siguientes afew funciona bien: "gcc -o mysql-test-MySQL Test.c -lmysqlclient" ahora que la clase de prueba está funcionando, ¿cómo iba a puerto ese comando a un IDE como NetBeans? – JB87

+0

Sugiero escribir un Makefile que se encargará de compilar la aplicación automáticamente. Allí puede especificar los argumentos de línea de comando para GCC. Puede encontrar información sobre cómo escribir archivos make aquí: http://www.delorie.com/djgpp/doc/ug/larger/makefiles.html Hay un montón de sitios web para ayudarle a escribir su propio archivo MAKE. – Gui13

+0

@codaddict ¿Cómo harías esto en Windows? – cokedude

2

No estás enlazando con las bibliotecas. Use: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c Consulte here para obtener más información sobre cómo enlazar con gcc.

4

Usted necesita gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz

Reemplazar -L/usr/local/mysql/lib con dondequiera que la biblioteca de cliente es (si no está ya en su libpath)

Ver el MySql instructions for building clients.

2

No es un error de compilación. Es un error de enlace.

Agregar la biblioteca mysql para crear su ejecutable con la opción -lmysql debería hacer el truco.

1

Tal vez tarde, pero funcionó para mí
Si está utilizando un IDE debe vincular la biblioteca a su proyecto.
Estoy usando CodeBlocks en ubuntu 12.4 64x. Para vincular la biblioteca, debe ir a Proyecto -> Opciones de compilación -> configuración del enlazador y agregar la biblioteca. este es mi camino lib: /usr/lib/x86_64-linux-gnu/libmysqlclient.so

Espero que sea útil ...

3

Para usos de Netbeans en Linux

abierto que crea el archivo (archivo MAKE) y añadir las siguientes líneas

# These are the flags that gcc requires in order to link correctly against our installed 
# client packages 
MYSQL_LIBS := $(shell mysql_config --libs) 

justo debajo del bloque de Medio Ambiente.

Luego haga clic derecho en su nodo de proyecto, seleccione Propiedades, Compilar y agregue $(MYSQL_LIBS) al parámetro Opciones adicionales.

Cuestiones relacionadas