2012-04-10 306 views
23

對於下面的複製下面的文件,我收到了丟失的分隔符錯誤。標籤空間似乎沒有任何問題。make命令makefile錯誤: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。 Make期待分隔符,通常爲:。它沒有將這條線檢測爲命令。你錯誤地輸入了想法:你有空間,你應該有一個標籤。

好的編輯器會突出顯示以空格開頭的makefile行,但看起來他們應該以tab開始。

+2

似乎問題出在我的gedit上,我將Tab設置爲空格。因此,錯誤。謝謝!!! – subramanian 2012-04-11 18:49:18

+4

單獨留下可憐的文本編輯器 - 問題在於'make'很愚蠢:\ – 2014-04-25 12:51:45

1

我不知道這是否是正確的或網上粘貼代碼的神器,但是對於文件中的最後兩個命令的壓痕看起來比它上面的命令小。仔細仔細檢查你的間距。

13

我看到這個錯誤消息,當一個文件使用空格而不是製作文件中一行開頭的製表符(多個)。

4

這種情況大多發生在您複製粘貼互聯網上的代碼時。使用刪除鍵刪除縮進行中的所有空格。然後按Tab鍵,每行只有一次。

保存並再次運行該文件。它現在應該工作。這對我有效。