J'ai du mal à écrire des fichiers makefiles. J'ai de l'expérience dans l'utilisation des variables extern
, quand je construis le projet sans utiliser de fichier makefile, je n'ai absolument aucune erreur et je peux lancer le programme. Mais à partir du moment où j'ai écrit le makefile pour construire le projet, j'obtiens des erreurs undefined reference to
.Temps de liaison "référence non définie à" erreurs
J'ai plus de 3 fichiers avec moi mais, par souci de simplicité, je vais utiliser 3 fichiers ici pour expliquer la configuration.
/************Project********/
/* main.c */
int x;
main()
{
...
}
/* File1.c*/
extern int x;
fn1()
{
...
}
/* File2.c*/
extern int x;
fn2()
{
...
}
/*******************************/
À l'aide du makefile je reçois undefined reference to
erreurs pendant le temps reliant pointant vers le fichier1.c et fichier2.c? Est-ce que je fais une erreur que l'éclipse corrige d'elle-même (quand makefile n'est pas utilisé) et qui disparaît quand j'utilise makefile?
Mon makefile finale ressemble à ceci -
OBJ1 = algorithme/algorithme main.o/algorithme File1.o/File2.o
all: final
final: main.o algorithm/File1.o algorithm/File2.o
@echo "Linking - making Final"
$(CC) -o [email protected] $(OBJ1)
Dans votre Makefile, la règle "final" dépend de main.o, mais vous liez ensuite l'algorithme/main.o. Est-ce intentionnel? – bjg