Erreur: séparateur manquant
j'obtiens l'erreur suivante en lançant make
:
Makefile:168: *** missing separator. Stop.
Qu'est-ce qui cause cela?
9 réponses
comme indiqué dans le online manual , la cause la plus fréquente de cette erreur est que les lignes sont indentées avec des espaces blancs lorsque make
attend des caractères tab.
Correct
target: \tcmd
\t est l'ONGLET
Mauvais
target: cmd
juste pour les grins, et au cas où quelqu'un d'autre rencontre une erreur similaire:
j'ai eu l'infâme erreur de "séparateur manquant" parce que j'avais invoqué une règle définissant une fonction comme
($eval $(call function,args))
plutôt que
$(eval $(call function,args))
c'est à dire ($eval $(call...
plutôt que $(eval $(call...
.
C'est une erreur de syntaxe dans votre Makefile. Il est assez difficile d'être plus précis que cela, sans voir le dossier lui-même, ou la(les) Partie (s) pertinente (s) de celui-ci.
pour moi, le problème était que j'avais des commentaires en fin de ligne # ...
inclus dans une définition de variable multi-ligne define ... endef
. Dépose des observations formulées par le problème.
mon erreur était sur une ligne de déclaration variable avec une extension multi-ligne. J'ai un espace de fuite après le "\" qui a fait que la ligne de continuation est invalide.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
dans mon cas, l'erreur est la suivante. J'ai essayé d'exécuter des commandes globalement I. e en dehors de toute cible.
UPD. Pour exécuter un commandement Globalement, il faut être correctement formé. Par exemple la commande
ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME
deviendrait:
$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
Dans mon cas, cette erreur est causée par le manque d'un simple espace. J'avais ceci si block dans mon makefile:
if($(METHOD),opt)
CFLAGS=
endif
qui aurait dû être:
if ($(METHOD),opt)
CFLAGS=
endif
avec un espace après si.
donc apparemment, tout ce dont j'avais besoin était le paquet" build-essential", puis d'exécuter autoconf
d'abord, qui a fait le Makefile.pre.in
, puis le ./configure
puis le make
qui fonctionne parfaitement...
code Makefile suivant travaillé:
obj-m = hello.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean