我尝试使用其他两个最相关的主题来解决这个问题: Makefile error: No rule to make target Makefile: No rule to make target. Stop
但似乎都没有解决我的问题。
我不确定我的代码出错了,因为我的导师证实代码在他的最后工作。
我的makefile的代码是:
TARGET = demo
FILES = test.c
OBJS = $(FILES:.c=.o)
ASMS = $(FILES:.c=.s)
all: $(TARGET)
$(TARGET): $(OBJS)
gcc -o $@ $^
%.o: %.c
gcc -c $< -o $@
%.s: %.c
gcc -S -masm=intel $< -o $@
asm: $(ASMS)
run: $(TARGET)
./$(TARGET)
clean:
rm -f $(TARGET) $(OBJS) $(ASMS)
然而,当我尝试“make run”时,它会产生结果
make: *** No rule to make target 'run'. Stop.
如此处所见image
我正在尝试编译的程序的实际代码只有4行。我不认为这是问题的原因
#include <stdio.h>
char *msg = "Exam Lab 1";
int main(int argc, char *argv[]) {
printf("%s\n", msg);
}
以下是我正在运行的make
目录的内容:
答案 0 :(得分:1)
您的makefile名称不正确。
默认情况下,make
会查找名为makefile
或Makefile
的文件。你的名字为Makefile.txt
,因此make
无法找到它。
将名称更改为makefile
或Makefile
,或使用-f
选项指定makefile名称,例如。 make -f Makefile.txt
。
答案 1 :(得分:1)
从您提供的图片中可以清楚地看到您已将文件命名为Makefile.txt
。正如@dbush所说,makefile 必须被命名为Makefile
或makefile
。这些是默认查找的唯一文件名。
或者您必须运行make -f Makefile.txt
。