我正在尝试编写一个Makefile但它正在显示
Make: Don't know how to make cc. Stop.
#include<stdio.h>
extern int print();
int main(){
print();
return 0;
}
print.c
#include<stdio.h>
int print(){
printf("hello\n");
return 0;
}
生成文件
all: OUT
OUT: cc Hello.o print.o -o OUT
Hello.o: Hello.c\
cc -c Hello.c
print.o: print.c \
cc -c print.c
clean: rm -f *.o
clobber: rm -f OUT
当我写作时 $&GT;使 制作:不知道如何制作cc。停止。
$&gt;干净利落 制作:不知道如何制作rm。停止。
我错过了什么......
我是这个make和makefile的新手,所以请给我一些关于这个的好教程
我改为: -
all: OUT
OUT:; @cc Hello.o print.o -o OUT
Hello.o:; @cc -c Hello.c
print.o:; @cc -c print.c
clean:; @rm -f *.o
clobber:; @rm -f OUT
显示错误: -
cc: warning 1913:
Hello.o'不存在或无法读取
cc:警告1913:print.o' does not exist or cannot be read
ld: I/O error, file "Hello.o": No such file or directory
Fatal error.
*** Error exit code 1
答案 0 :(得分:4)
规则必须与目标不同,使用硬标签缩进:
all: OUT
OUT: Hello.o print.o
cc Hello.o print.o -o OUT
Hello.o: Hello.c
cc -c Hello.c
print.o: print.c
cc -c print.c
clean:
rm -f *.o
clobber:
rm -f OUT
但是这可以通过依赖隐式规则来简化,并通过使用一些变量进行推广:
all: OUT
OUT: Hello.o print.o
$(CC) $(CFLAGS) $^ -o $@
clean:
rm -f *.o
clobber:
rm -f OUT