Les Allergies
Alimentaires
Posez votre question Signaler

Compilation gcc undefined reference to ...

Kat - Dernière réponse le 26 févr. 2007 à 18:31
Bonjour,

J'ai un probleme de compilation. Je ne suis pas très douée en makefiles donc je sais que mon problème vient de là.

J'ai écrit un makefile qui me génère des .o correctement:
fichier.o: fichier.c fichier.h
gcc -Wall -03 -c fichier source
Ensuite, pour générer l'exécutable, j'utilise des libs (.a) qui se trouvent dans /usr/lib:
executable: $(OBJ)
-lnom_de_lib -o executable $(OBJ)
Apparement, il trouve les libs puisqu'il ne dit pas le contraire mais me met une "undefined reference to ..." à chaque fois que je fais appel à l'une des fonctions de ces libs.
Auriez-vous une solution? Merci

Kat
Lire la suite 

Compilation gcc undefined reference to »

5 réponses
Réponse
+3
moins plus
Bonjour,

La commande de compilation :

/opt/rtems-4.6/bin/sparc-rtems-gcc.exe -g leon_full_test.c -o leon_full_test sous Cygwin

ne mentionne qu'un seul fichier à compiler (leon_full_test.c).
De ce fait, il n'y a pas de raison que "toutes ces fonctions écrites dans leurs fichiers respectifs" soient compilés.

A priori, il faut indiquer tous les fichiers concernés dans la commande.

NB il est d'usage de faire des compilations séparées de chaque fichier (mettre l'option -c, ne pas mettre le -o), puis de "linker" l'ensemble (mettre la liste des .o avec une option -o).

Manu
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Essaies de positionner les lib à la fin de la ligne de compil
gcc -o executable $(OBJ)  -lnom_de_lib

A+, crabs
Kat - 1 sept. 2005 à 10:14
C'est gentil d'avoir répondu.
J'ai essayé mais malgré tout ça ne marche pas. D'autres idées?
Ajouter un commentaire
Réponse
+0
moins plus
Le mieux c'est que tu postes ton makefile et les noms de quelques fonctions
qui ne fonctionnent pas.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

J'utilise un cross-compiler sour Cygwin pour compiler des test écrits en C. Ces tests seront mis en mémoire virtuelle pour simuler un processeur LEON2. Malheureusement lors de la compilation, des erreurs du type "undefined reference to ..." vers des fonctions écrites dans d'autres fichiers (ces fichiers en question sont tous dans le même dossier).

En tapant la ligne
/opt/rtems-4.6/bin/sparc-rtems-gcc.exe -g leon_full_test.c -o leon_full_test sous Cygwin

Les erreurs précités s'affichent et je ne comprends pas trop pourquoi elle apparaissent.

De plus, je sais que toutes ces fonctions écrites dans leurs fichiers respectifs utilisent les mêmes fichiers include donc ma première idée a été de rajouter les intitulés de toutes ces fonctions dans l'include et dans le main principal (leon_full_test.c) rajouté l'intitulé de ces fonctions précèdés par extern pour dire que ces fonctions sont implémentées dans des fichiers externes.

Ca marche toujours pas. pourtant en faisant la même chose avec un autre projet, cette méthode marche sans problème.

Si quelqu'un a une solution, faites moi signe

Merci,
Ajouter un commentaire
Ce document intitulé « compilation gcc undefined reference to ... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?