C Makefile生成错误“无规则生成目标”
我尝试使用其他两个最相关的主题来解决此问题: 但两者似乎都不能解决我的问题 我不确定我的代码哪里出错了,因为我的指导老师验证了代码在他那一方有效 我的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
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);
}