Makefile的用途
1.make能够使整个程序的编译、链接只需一个命令就可以完成
2.make的工作主要依赖于Makefile的文件。Makefile文件描述了整个程序的编译、链接等规则,使之自动完成。
Makefile的构成
1.规则
targets(目标):prerequisties(依赖)
command(命令)
注意:command前面是[tab]而不是空格,否则执行会出错
1.伪目标:只有目标和命令,没有依赖的规则称为伪目标,伪目标通常用 .PHONY:targets (也可以不写)标明是一个伪目标
2.最终目标:如果 make 后面什么都没有跟,则运行第一条规则,这条目标称为最终目标
3.指定目标:如果只想运行规则中的一条目标,只需要执行 make targets 就只会产生对应的目标
2.变量
1.在Makefile中多次出现的组成部分,可以用变量来替换
2.变量的定义:name=file1 file2… , 注意”=”两边不要有空格
3.变量的使用:$(name) 相当于 file1 file2…
4.系统默认变量
$@:表示目标(all除外,all不是目标名)
$^:表示所有的依赖
$<:表示第一个依赖
5.通用规则
如果多条规则的仅只有目标和依赖的文件类型不同,命令都相同,则多条规则可以用一条通用规则替换
1
2
%.o:%.c
arm-liunx-gcc -c $^ -o $@
Makefile使用技巧
1.去回显,在对应要去回显的命令前面加上@
2.make工具默认情况下只能运行当前目录下的Makefile或makefile文件,当要指定运行其他文件是可以使用”-f”命令 make -f name
obj=led.o
all: $(obj)
arm-linux-ld -Tled.lds $^ -o led.elf
arm-linux-objcopy -O binary led.elf led.bin
%.o : %.S
arm-linux-gcc -g -c $^ -o $@
.PHONY: clean
clean:
@rm *.o *.elf *.bin