2012-04-10 23 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行を強調表示します。

+2

私のgeditに問題があるように見えますが、Tabをスペースに設定しました。したがってバグ。ありがとう!!! – subramanian

+4

貧弱なテキストエディタだけを残す - 問題は 'make'が愚かであることです:\ –

1

それは正確ですかオンラインのコードを貼り付けるのアーティファクトかどうかは知りませんが、それはそれ以上のコマンドより小さいだように、ファイルの最後の2つのコマンドのインデントが見えます。間隔を慎重に再確認してください。

13

ファイルがメイクファイルの行頭にタブ文字の代わりにスペースを使用すると、このエラーメッセージが表示されます。

4

これは、インターネットからコードをコピーしてコピーすると、ほとんどの場合発生します。インデントされた行からすべてのスペースを削除するには、deleteキーを使用します。タブキーを1行に1回だけ押します。

保存してもう一度ファイルを実行してください。今はうまくいくはずです。これは私のために働いた。

関連する問題