problème de compilation - C - Programmation
Marsh Posté le 19-07-2007 à 21:17:39
Nookie_chan a écrit : et voilà les commandes essayées dernièrement : |
gcc connec.o libmysqlclient.a -o connec
Et va lire la doc de gcc
Marsh Posté le 23-07-2007 à 09:07:20
J'ai lu la doc de gcc mais j'ai pas trouvé ça dedans désolée.
J'ai essayé ta commande et ça me met une erreur que j'ai déjà eu avant :
connec.o:connec.c:<.text+0x25>: référence indéfinie vers <<_mysql_init>>
collect2 : ld a retourné 1 code d'état d'exécution
Je ne comprends pas pourquoi puisque je fais appel à mysql_init et non à _mysql_init
Pourriez-vous m'aider?
Marsh Posté le 17-08-2007 à 20:38:07
pour produite un .o avec gcc, faut faire :
gcc -c toto.c -o toto.o
et ensuite :
gcc toto.o -o toto
Après, pour ton mysql_init, il se peut qu'il y a ait une macro dans un coin qui transforme ton mysql_init en _mysql_init. Pour finir, il faut aussi certainement linker à une lib
Marsh Posté le 17-08-2007 à 22:40:24
Dumbledore a écrit : pour produite un .o avec gcc, faut faire : |
gcc -c toto.c suffit amplement
Dumbledore a écrit : Pour finir, il faut aussi certainement linker à une lib |
Ben oui => c'est ce qu'il tentait de faire avec libmysqlclient.a mais apparemment, il ne s'agit pas de la bonne librairie.
=> Nookie_chan, la compilation multi-sources avec librairies se fait en plusieurs étapes
1) il te faut générer les .o de chaque .c => gcc -c <le fichier.c> (à faire pour chaque source) => cela te génèrera autant de ".o" que de ".c" mais seule la syntaxe du source est vérifiée
2) créer l'exécutable en y rajoutant l'édition de liens entre les différents .o et vers les librairies qui vont bien => toutes les fonctions spécifiques aux librairies que tu appelles seront prises des librairies et intégrées dans ton exécutable =>
gcc -o executable x.o y.o z.o <...tous les autres .o...> lib1.a lib2.a lib3.a <...toutes les autres librairies...>
Bien entendu, pour cette dernière phase, il te faut 1) savoir quelle librairie utiliser et 2) l'avoir à disposition. Apparemment, libmysqlclient.a n'est pas la bonne puisqu'elle ne connait pas la fonction "mysql_init()"...
Marsh Posté le 18-07-2007 à 11:26:45
Bonjour à tous,
j'ai un problème avec un programme C. Je suis sous Windows et j'utilise cygwin mais je n'arrive pas à compiler.
Voici le code :
et voilà les commandes essayées dernièrement :
gcc -c connec.c
gcc -o connec.o libmysqlclient.a
et j'ai l'erreur :
/usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../libcygwin.a<libcmain.o>:<.text+0xab>: référence indéfinie vers <<_WinMain@16>>
collect2 : ld a retourné 1 code d'état d'exécution
et il apparaît que le _WinMain@16 appartient à l'API C windows cependant il ne me semble pas que je l'utilise.
Pouvez vous m'aider?
Merci d'avance