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.
  • Рекурсивные подстановочные знаки в GNU?
  • Makefile ifeq логический или
  • Makefile, зависимости заголовка
  • Как я могу заставить Makefile автоматически пересобирать исходные файлы, содержащие модифицированный заголовочный файл? (В C / C ++)
  • Как приложение «make» знает цель по умолчанию для сборки, если не указана цель?
  • CMake: Как установить LDFLAGS в CMakeLists.txt?
  • Makefiles, как я могу их использовать?
  • GCC с Visual Studio?
  • Как использовать make-файлы в Windows
  • Что означают символы makefile $ @ и $ <mean?
  • Что противоположно «make install», то есть как вы удаляете библиотеку в Linux?
  • Давайте будем гением компьютера.