Makefile
#是注释
目标文件:依赖文件
【Tab】指令
第一个目标文件是最终目标
来看编译过程:
伪目标
.PHONY:+名称
编译多个可执行文件的时候需要加all
比如:
语法:
变量 = (替换) += 追加 :=常量
引用 $(变量)
更改后程序如下
改进:
隐含规则
通配符
%.c %.o 任意的.c文件或者.o文件
*.c *.o
$^所有的目标文件
$@所有的依赖文件
$< 所有依赖文件第一个文件
.c->.exe文件过程
预处理:把.h .c展开形成一个文件。例如宏定义的替换 生成.i文件
gcc -E hello.c -o hello.i
汇编:生成汇编代码文件 .S
gcc -S hello.i -o hello.S
编译:.S生成.o文件
gcc -c hello.S -o hello.o
链接:将所有.o文件链接生成.exe文件 linux下是.elf文件
gcc hello.o -o hello
第一层:
隐含规则
任意的.c文件或者任意的.o文件
%.c
%.o
通配符
通配符:
- ? []
*.c 表示后缀为.c的文件
$@表示目前规则中所有目标的集合
目标模式或者是依赖模式都应该有 % 这个字符
%.o : %.c
$< 表示所有的依赖目标集
$@表示目标集