【发布时间】:2021-07-05 20:22:58
【问题描述】:
大家好,我正在尝试运行这个 makefile,但终端给了我输出:
make: *** No rule to make target 'abc'. Stop.
这是生成文件
CFLAGS = -Wall
CC = gcc
LP = -lpthread
all: abc
abc: exam.o memorizer.o
$(CC) $(LP) exam.o memorizer.o
exam.o: exam.c
$(CC) -g $(CFLAGS) $(LP) exam.c -o exam.o
memorizer. or: memorizer.c
$(CC) -g $(CFLAGS) memorizer.c -o memorizer.o
clean:
rm *.o abc
我能做什么?
【问题讨论】:
-
那是您的确切生成文件吗?每个目标的命令都需要标签。
$和被扩展的变量之间不能有空格。 -
@kaylum 这应该是答案。另外
rm * .o abc是邪恶的,*和.o之间的空间改变了一切。此命令删除目录中的所有文件。 -
我同意@kaylum 的 cmets 但这不是这里的问题。如果生成文件与此处键入的内容完全相同,则将出现语法错误,而不是“没有生成目标的规则”。请显示您输入的确切 make 命令和您得到的确切错误,并告诉我们您的 makefile 的文件名。我怀疑您将 makefile 命名为非标准的东西,然后在命令行上键入
make abc。 -
@mch 我们没有足够的信息说这就是答案。 makfile 肯定有一些问题,但可能无法解释确切的症状。我希望 OP 将得到更新和澄清。
-
抱歉复制粘贴失败,现在我重新调整了makefile。 makefile 的名称是“Makefile”,终端将我上面写的内容返回给我。