Makefile 产生错误“没有规则来生成目标”

Cas*_*ews 6 c linux makefile

我尝试使用其他两个最相关的主题来修复此问题: Makefile 错误:没有创建目标的规则 Makefile:没有创建目标的规则。停止

但似乎都没有解决我的问题。

我不确定我的代码哪里出了问题,因为我的导师验证了代码在他那一端是否有效。

我的 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)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行“make run”时,它会产生结果

make: *** No rule to make target 'run'. Stop.
Run Code Online (Sandbox Code Playgroud)

正如这里所看到的图像

我尝试编译的程序的实际代码只有 4 行长。我不认为这是问题的原因

#include <stdio.h>
char *msg = "Exam Lab 1";

int main(int argc, char *argv[]) {
    printf("%s\n", msg);
}
Run Code Online (Sandbox Code Playgroud)

这是我运行的目录的内容make

http://i.imgur.com/r5EnwHj.png

dbu*_*ush 7

您的 makefile 没有正确的名称。

默认情况下,make查找名为 或makefile的文件Makefile。你的名字是Makefile.txt,所以make找不到。

将名称更改为makefileMakefile,或使用-f选项指定 makefile 名称,例如。make -f Makefile.txt