J'implémente une liste de liens dans deux fichiers dans linklist.h et linklist.c, et j'appelle certaines fonctions définies dans linklist.h dans la fonction principale de main.c. linklist.h est inclus dans linklist.c et main.c. Lorsque je compile ce programme par GCC avec Makefile, l'erreur nommée "référence non définie à xxx" se produit. Je pense que mon Makefile est écrit correctement comme ci-dessous. Quelle est la raison possible de cette erreur de liaison?Référence non définie à "func" lors de la compilation avec GCC
CC=gcc
CFLAGS= -g -O2
TARGET=target
OBJECTS=main.o linklist.o
TARGET: $(OBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) -o $(TARGET)
clean:
rm target $(OBJECTS)
main.o:linklist.h
linklist.o:linklist.h
Je ne sais pas beaucoup de choses sur makefiles, mais ne devrait-on pas mentionner 'linklist.c' et' main.c' quelque part, à part les fichiers d'en-tête? – stakx
Non, il suffit de nommer les fichiers objets. Make sait quels fichiers C sont associés aux fichiers objets à partir de ses règles d'inférence. – Jens