Ошибка: отсутствует разделитель - PullRequest
196 голосов
/ 28 мая 2009

Я получаю следующую ошибку при запуске make:

Makefile:168: *** missing separator.  Stop.

Что вызывает это?

Ответы [ 10 ]

300 голосов
/ 28 мая 2009

Как указано в онлайн-руководстве , наиболее распространенная причина этой ошибки - строки с пробелами, когда make ожидает символы табуляции.

Корректное

target: 
\tcmd

, где \ t - TAB

Неправильный

target:
    cmd
11 голосов
/ 25 ноября 2015

Просто ради ухмылки, и в случае, если кто-то еще столкнется с подобной ошибкой:

Я получил печально известную ошибку «отсутствует разделитель», потому что я вызвал правило, определяющее функцию как

($eval $(call function,args))

вместо

$(eval $(call function,args))

т.е. ($eval $(call..., а не $(eval $(call....

7 голосов
/ 28 мая 2009

Это синтаксическая ошибка в вашем Makefile. Довольно сложно быть более конкретным, не видя самого файла или его соответствующих частей.

2 голосов
/ 28 марта 2017

Моя ошибка была в строке объявления переменной с многострочным расширением. У меня есть завершающий пробел после "\", что сделало недопустимым продолжение строки.

MY_VAR = \
   val1 \ <-- 0x20 there caused the error.
   val2
2 голосов
/ 10 мая 2016

Для меня проблема заключалась в том, что у меня было несколько # ... комментариев в конце строки, встроенных в многострочное определение переменной define ... endef. Удаление комментариев заставило проблему уйти.

1 голос
/ 03 ноября 2015

В моем случае ошибка вызвала следующая. Я пытался выполнять команды глобально, т.е. вне какой-либо цели.

UPD. Чтобы выполнить команду глобально, нужно правильно сформировать. Например команда

ln -sf ../../user/curl/$SRC_NAME ./$SRC_NAME

станет:

$(shell ln -sf ../../user/curl/$(SRC_NAME) ./$(SRC_NAME))
0 голосов
/ 06 декабря 2018

В моем случае возникла та же ошибка, потому что двоеточие : отсутствовало в конце, как в staging.deploy:. Так что учтите, что это может быть простой синтаксической ошибкой.

0 голосов
/ 19 августа 2018

Так что, очевидно, все, что мне было нужно, это пакет "build-essential", затем сначала запустить autoconf, что сделало Makefile.pre.in, затем ./configure, а затем make, который работает отлично ...

0 голосов
/ 03 февраля 2018

В моем случае эта ошибка была вызвана отсутствием свободного места. У меня было это, если блок в моем make-файле:

if($(METHOD),opt)
CFLAGS=
endif

который должен был быть:

if ($(METHOD),opt)
CFLAGS=
endif

с пробелом после if.

0 голосов
/ 10 августа 2015

Сработал следующий код Makefile:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...