45 votes

Erreur dans la commande make makefile:18 : *** séparateur manquant. Arrêtez

Pour le fichier make copié ci-dessous, j'obtiens l'erreur de séparateur manquant. Il ne semble pas y avoir de problème avec l'espacement des tabulations.

OBJS = driver.o snapshot.o
SHOBJS = malloc.o mymemory.o
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
Snapshot: $(OBJS)
  $(CC) $(LFLAGS) $(OBJS) -o Snapshot
driver.o: snapshot.h driver.cpp
  $(CC) $(CFLAGS) driver.cpp
snapshot.o: mymemory.h snapshot.h snapshot.cpp
  $(CC) $(CFLAGS) snapshot.cpp
libmymemory.so: $(SHOBJS)
  gcc -shared -o libmymemory.so malloc.o mymemory.o
malloc.o: malloc.c
  gcc -fPIC -g -c -Wall malloc.c
mymemory.o: mymemory.cpp
 gcc -fPIC -g -c -Wall mymemory.cpp 
clean:
 \rm *.o *~ Snapshot

81voto

Gilles Points 37537

La ligne 18 est gcc -fPIC -g -c -Wall mymemory.cpp . Make attend un séparateur, généralement : . Il ne détecte pas cette ligne comme une commande. Vous avez mal saisi l'intention : vous avez des espaces là où vous devriez avoir une tabulation.

Les bons éditeurs mettent en évidence les lignes du fichier makefile qui commencent par des espaces mais qui semblent devoir commencer par une tabulation.

27voto

Drew Noakes Points 69288

J'ai vu ce message d'erreur lorsqu'un fichier utilisait des espaces au lieu de caractères de tabulation au début d'une ligne dans le fichier makefile.

6voto

Namit Gupta Points 173

Cela se produit principalement si vous copiez-collez le code depuis Internet. Supprimez tous les espaces des lignes en retrait en utilisant la touche de suppression. Puis appuyez sur la touche de tabulation, une seule fois par ligne.

Sauvegardez-le et essayez d'exécuter le fichier à nouveau. Il devrait fonctionner maintenant. Ceci a fonctionné pour moi.

4voto

bta Points 22525

Je ne sais pas si c'est exact ou si c'est un artefact dû au collage du code en ligne, mais l'indentation des deux dernières commandes du fichier semble être plus petite que celle des commandes précédentes. Vérifiez soigneusement votre espacement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X