makefile: 4: *** отсутствует разделитель. Стоп

Это мой makefile:

all:ll ll:ll.c gcc -c -Wall -Werror -02 cc ll.c -o ll [email protected] $< clean : \rm -fr ll 

Когда я пытаюсь make clean или make make , я получаю эту ошибку:

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

Как я могу это исправить?

makefile имеет очень тупое отношение к вкладкам, все действия каждого правила идентифицируются с помощью вкладок …… и No 4 пробелов не делают вкладку, только вкладка делает вкладку …

чтобы проверить, что я использую команду cat -e -t -v makefile_name

он показывает, что наличие вкладок с ^ I и окончаниями строк с помощью $ оба являются жизненно важными для обеспечения того, что зависимости заканчиваются должным образом, а вкладки отмечают действие для правил, чтобы они были легко идентифицированы с помощью утилиты make …..

пример :

 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 [email protected] $<$ ## 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 

надеюсь это поможет !!

Вы всегда должны писать команду после «вкладки», а не пробела.

Это относится к строке «gcc» (строка № 4) в вашем случае. Вам нужно вставить вкладку до gcc.

Также замените \ rm -fr ll на “rm -fr ll”. Вставьте вкладки перед этой командой

В VS-коде просто нажмите «Пробел: 4» в правом углу и измените его на вкладку при редактировании Makefile.

Ключевым моментом был «HARD TAB» 1. Проверьте, не использовался ли вы TAB вместо пробела. 2. Проверьте свой .vimrc на «set tabstop = X»

Его довольно старый вопрос, но все же я хотел бы сказать еще об одном варианте с помощью редактора vi/vim для визуализации вкладок. Если у вас установлен vi/vim откройте Makefile (например, vim Makefile ) и введите :set list . Это покажет количество вкладок, вставленных ниже,

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

Это связано с тем, что вкладка заменяется пробелами. Чтобы отключить эту функцию, перейдите к

gedit-> Edit-> Настройки-> редактор

и удалите чек для

« заменить вкладку пробелом »

Если кто-то из вас использует продукт Intellij, решение для этого следующее:

  1. Перейдите в раздел «Настройки»> «Редактор»> «Стиль кода»
  2. здесь вам нужно выбрать тип файла, связанный с вашей проблемой. Но, скорее всего, вам нужно выбрать « Other File Types .
  3. В открывшейся вкладке отметьте флажок для Use tab character и будьте осторожны: Tab size и значения Indent должны быть Indent 4.
  • crti.o отсутствует файл
  • Разница между CPPFLAGS и CXXFLAGS в GNU Make
  • Как приложение «make» знает цель по умолчанию для сборки, если не указана цель?
  • Как использовать make-файлы в Windows
  • Создание C-программы «из исходного дерева» с помощью GNU make
  • Рекурсивные подстановочные знаки в GNU?
  • Передача аргументов для «make run»
  • Makefile ifeq логический или
  • Как поддерживать оба vcxproj в cmake в проекте?
  • Почему PONI неявные правила шаблонов не срабатывают?
  • Источники из подкаталогов в Makefile
  • Давайте будем гением компьютера.