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

如果您从互联网复制粘贴代码,通常会发生这种情况。使用删除键删除缩进行中的所有空格。然后按 Tab 键,每行仅一次。

保存并再次尝试运行该文件。它现在应该可以工作了。这对我有用。

于 2013-12-13T07:38:07.730 回答
4

我不知道它是否准确或在线粘贴代码的工件,但文件中最后两个命令的缩进看起来比它上面的命令小。仔细检查你的间距。

于 2012-04-10T22:14:15.110 回答