2010-08-03 14 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 compiler et exécuter l'habitude de bibliothèques MySQL C

im essayant d'exécuter ce programme de test du terminal, mais le message d'erreur suivant :

/tmp/cceEmI0I.o: En fonction main': MySQL-Test.c:(.text+0xa): undefined reference to mysql_get_client_info »

ce qui est faux? mon système est ubuntu

Répondre

14

MySQL est livré avec un script spécial appelé mysql_config. Il vous fournit des informations utiles pour compiler votre client MySQL et le connecter au serveur de base de données MySQL.

Pass --libs option - Bibliothèques et options requises pour lier à la bibliothèque client MySQL.

$ mysql_config --libs 

sortie typique:

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

Maintenant, vous pouvez ajouter à votre compilation/ligne de liaison:

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

grâce ce script clair des choses a aidé afew, les œuvres suivantes: très bien "gcc -o mysql-test MySQL-Test.c -lmysqlclient" maintenant que la classe de test fonctionne, comment pourrais-je le port cette commande à un IDE tel que NetBeans? – JB87

+0

Je suggère d'écrire un Makefile qui s'occupera de compiler l'application automatiquement. Vous pouvez y spécifier les arguments de la ligne de commande pour GCC. Vous pouvez trouver des informations sur la façon d'écrire des fichiers makefile ici: http://www.delorie.com/djgpp/doc/ug/larger/makefiles.html Il ya beaucoup de sites Web pour vous aider à écrire votre propre fichier makefile. – Gui13

+0

@codaddict Comment le feriez-vous dans Windows? – cokedude

2

Vous n'êtes pas lié aux bibliothèques. Utilisation: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c Voir here pour plus d'informations sur la création de liens avec gcc.

4

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

Remplacer -L/usr/local/mysql/lib avec chaque fois que votre bibliothèque client est (si elle est pas déjà dans votre libpath)

Voir la MySql instructions for building clients.

2

Ce n'est pas une erreur de compilation. C'est une erreur de lien. Ajouter la bibliothèque mysql pour créer votre exécutable avec l'option -lmysql devrait faire l'affaire.

1

Peut-être en retard, mais travaillé pour moi
Si vous utilisez un IDE vous devriez lier la bibliothèque à votre projet. J'utilise CodeBlocks sur Ubuntu 12.4 64x. Pour lier la bibliothèque, allez dans Projet -> Options de construction -> Paramètres de l'éditeur de liens et ajoutez la bibliothèque. c'est mon chemin de lib: /usr/lib/x86_64-linux-gnu/libmysqlclient.so

Espérons être utile ...

3

Pour les utilisations de Netbeans sur Linux

Ouvrir le fichier que vous faire (MakeFile) et ajoutez les lignes suivantes

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

juste en dessous du bloc de l'environnement.

Ensuite, faites un clic droit sur votre noeud de projet, sélectionnez Propriétés, Construire et ajoutez $(MYSQL_LIBS) au paramètre Options supplémentaires.