makefile: 4: *** Séparateur manquant. Arrêtez

Ceci est mon makefile:

all:ll ll:ll.c gcc -c -Wall -Werror -02 cc ll.c -o ll $@ $< clean : \rm -fr ll 

Lorsque j’essaie de make clean ou de make make , je reçois cette erreur:

 :makefile:4: *** missing separator. Stop. 

Comment puis-je le réparer?

makefile a une relation très stupide avec les tabs, toutes les actions de chaque règle sont identifiées par des tabs …… et No 4 espaces ne font pas un onglet, seul un onglet fait un onglet …

pour vérifier j’utilise la commande cat -e -t -v makefile_name

il montre la présence d’tabs avec ^ I et les terminaisons de ligne avec $ both sont essentielles pour garantir que les dépendances se terminent correctement et que les tabulations marquent l’action pour les règles afin qu’elles soient facilement identifiables par l’utilitaire make …..

Exemple :

 Kaizen ~/so_test $ cat -e -t -v mk.t all:ll$ ## here the $ is end of line ... $ ll:ll.c $ ^Igcc -c -Wall -Werror -02 cc ll.c -o ll $@ $<$ ## the ^I above means a tab was there before the action part, so this line is ok . $ clean :$ \rm -fr ll$ ## see here there is no ^I which means , tab is not present .... ## in this case you need to open the file again and edit/ensure a tab ## starts the action part 

J'espère que cela t'aides !!

Vous devez toujours écrire la commande après un “onglet” et non un espace blanc.

Cela s’applique à la ligne “gcc” (ligne 4) dans votre cas. Vous devez insérer l’onglet avant gcc.

Remplacez également \ rm -fr ll par “rm -fr ll”. Insérer aussi des tabs avant cette commande

Sur VS Code, cliquez simplement sur “Espace: 4” dans le coin droit et changez-le en onglet lors de l’édition de votre Makefile.

Le point clé était “HARD TAB” 1. Vérifiez si vous avez utilisé TAB au lieu des espaces blancs. 2. Vérifiez que votre fichier .vimrc contient “set tabstop = X”

Sa très vieille question mais je voudrais quand même parler d’une autre option en utilisant l’ vi/vim pour visualiser les tabs. Si vous avez installé vi/vim ouvrez un Makefile (par exemple vim Makefile ) et entrez :set list . Cela montrera le nombre d’tabs insérés comme ci-dessous,

  %-linux: force$ ^I@if [ "$(GCC_VERSION)" = "2.96" ] ; then \$ ^I^Iecho ===== Generating build tree for legacy $@ architecture =====; \$ ^I^I$(CONFIGURE) $(CWD) $@ legacy; \$ ^Ielse \$ ^I^Iecho ===== Generating build tree for $@ architecture =====; \$ ^I^I$(CONFIGURE) $(CWD) $@; \$ ^Ifi$ ^Icd build-$@;make$ 

C’est parce que l’onglet est remplacé par des espaces. Pour désactiver cette fonctionnalité, allez à

gedit-> edit-> preferences-> éditeur

et retirez le chèque pour

remplacer l’onglet par un espace

Si vous utilisez un produit d’Intellij, la solution est la suivante:

  1. Allez dans Préférences> Editeur> Style de code
  2. Ici, vous devez sélectionner le type de fichier lié à votre problème. Mais très probablement, vous devez sélectionner Other File Types .
  3. Dans l’onglet ouvert, cochez la case Use tab character et soyez prudent, la Tab size et les valeurs de Indent doivent être 4.