46

以下にコピーされた次のmakeファイルの場合、セパレータがありませんというエラーが発生します。タブスペースに問題はないようです。

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
4

4 に答える 4

83

18行目はgcc -fPIC -g -c -Wall mymemory.cppです。Makeは、通常はセパレータを期待してい:ます。この行をコマンドとして検出していません。意図を誤って入力しました。タブが必要な場所にスペースがあります。

優れたエディターは、スペースで始まるmakefile行を強調表示しますが、代わりにタブで始まる必要があるように見えます。

于 2012-04-10T22:23:34.560 に答える
29

makefileの行の先頭で、ファイルがタブ文字の代わりにスペースを使用している場合に、このエラーメッセージが表示されます。

于 2012-10-19T19:07:13.837 に答える
6

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

保存して、ファイルの実行を再試行してください。これで動作するはずです。これは私のために働いた。

于 2013-12-13T07:38:07.730 に答える
4

それが正確なのか、コードをオンラインで貼り付けた結果なのかはわかりませんが、ファイルの最後の2つのコマンドのインデントは、その上のコマンドよりも小さいように見えます。間隔を注意深く再確認してください。

于 2012-04-10T22:14:15.110 に答える