C Makefile生成错误“无规则生成目标”

C Makefile生成错误“无规则生成目标”,c,linux,makefile,C,Linux,Makefile,我尝试使用其他两个最相关的主题来解决此问题: 但两者似乎都不能解决我的问题 我不确定我的代码哪里出错了,因为我的指导老师验证了代码在他那一方有效 我的makefile的代码是: TARGET = demo FILES = test.c OBJS = $(FILES:.c=.o) ASMS = $(FILES:.c=.s) all: $(TARGET) $(TARGET): $(OBJS) gcc -o $@ $^ %.o: %.c gcc

我尝试使用其他两个最相关的主题来解决此问题:

但两者似乎都不能解决我的问题

我不确定我的代码哪里出错了,因为我的指导老师验证了代码在他那一方有效

我的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)
如图所示

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

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

int main(int argc, char *argv[]) {
    printf("%s\n", msg);
}
以下是我运行make的目录的内容:


您的makefile没有正确的名称

默认情况下,make查找名为makefile或makefile的文件。您的名为Makefile.txt,因此make无法找到它


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

从您提供的图像可以清楚地看出,您已将文件命名为makefile.txt。正如@dbush所说,makefile必须命名为makefile或makefile。默认情况下,只有这些文件名才进行查找


或者您必须运行make-f Makefile.txt。

确保每个配方的缩进行仅使用制表符,而不是空格。感谢您的提醒。完全忘记了makefiles依赖于选项卡,但是我仍然遇到了这个问题。您运行make的目录的内容是什么?名为makefile或makefile的makefile和.c文件应该在那里。另外,您正在使用GNU make吗?运行make-v找出答案。是的,所有文件都在同一个目录中,我使用的是GNU make 4.1。你知道,我是个白痴。谢谢你修复了它,我想我太习惯窗户了。
#include <stdio.h>
char *msg = "Exam Lab 1";

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