2012-04-10 4 views
23

Для следующего файла, скопированного ниже, я получаю недостающую ошибку разделителя. Кажется, что нет ничего неправильного в tabspace.Ошибка в 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 

ответ

45

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

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

+2

Кажется, проблема была в моем gedit, я сделал make Tab как пробелы. Отсюда ошибка. Благодаря!!! – subramanian

+4

оставляют только плохой текстовый редактор - проблема заключается в том, что 'make' является глупым: \ –

1

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

13

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

4

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

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

Смежные вопросы