Подтвердить что ты не робот

Ошибка в make make make make: 18: *** отсутствует разделитель. Стоп

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

OBJS = driver.o snapshot.o
SHOBJS = malloc.o mymemory.o
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
Snapshot: $(OBJS)
  $(CC) $(LFLAGS) $(OBJS) -o Snapshot
driver.o: snapshot.h driver.cpp
  $(CC) $(CFLAGS) driver.cpp
snapshot.o: mymemory.h snapshot.h snapshot.cpp
  $(CC) $(CFLAGS) snapshot.cpp
libmymemory.so: $(SHOBJS)
  gcc -shared -o libmymemory.so malloc.o mymemory.o
malloc.o: malloc.c
  gcc -fPIC -g -c -Wall malloc.c
mymemory.o: mymemory.cpp
 gcc -fPIC -g -c -Wall mymemory.cpp 
clean:
 \rm *.o *~ Snapshot
4b9b3361

Ответ 1

Строка 18 - gcc -fPIC -g -c -Wall mymemory.cpp. Make ожидает разделитель, обычно :. Он не обнаруживает эту строку как команду. Вы не поняли намерения: у вас есть места, где вы должны иметь вкладку.

Хорошие редакторы выделяют строки makefile, которые начинаются с пробелов, но выглядят так, как будто они должны начинаться с закладки.

Ответ 2

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

Ответ 3

Это в основном происходит, если вы скопируете код из Интернета. Удалите все пробелы из отступов, используя клавишу удаления. И затем нажмите клавишу табуляции, только один раз на строку.

Сохраните его и повторите попытку запуска файла. Теперь он должен работать. Это сработало для меня.

Ответ 4

Я не знаю, является ли он точным или артефактом для вставки кода онлайн, но отступ для последних двух команд в файле выглядит меньше, чем команды над ним. Внимательно проверьте ваш интервал.