Makefile中的变量和自动变量图
Makefile代码
#定义变量CC
CC := arm-linux-gcc
#伪目标修饰
.PHONY:all
#伪目标all
all: myboot
#所有目标文件 : 所有依赖文件
#通过CC变量替换arm-linux-gcc, -o 生成目标的集合 -c 依赖中的第一文件
%.o : %.s
$(CC) -o $@ -c $<
.PHONY:mksd
mksd:
#使用dd命令将输入文件没有boot.16k烧写到SD卡的扇区1中,此条命令在只make的时候不会执行,只有在make mksd的时候开始运行
sudo dd iflag=dsync oflag=dsync if=myboot.16k of=/dev/sdb seek=1
#myboot的依赖有两个 mystart.o和mylowlevel_init.o,make在文件中没有发现*.o依赖后会在下面寻找*.o,如果有则执行
myboot: mystart.o mylowlevel_init.o myboot.lds
arm-linux-ld -Tmyboot.lds -o myboot mystart.o mylowlevel_init.o #链接生成elf格式的myboot,说明myboot.lds为链接脚本
arm-linux-objcopy -o binary myboot myboot.bin #生成myboot.bin的二进制文件
./mkv210 myboot.bin myboot.16k #运行mkv210将myboot.bin制作成myboot.16k的烧写文件
.PHONY:clear
clear
rm *.o myboot myboot.bin myboot.16k -f #-f:表示强制删除不提示
增加的知识点
- 变量 CC
用法:
CC := arm-linux-gcc - 自动变量
用法:
%.o : %.s
$(CC) -o $@ -c $< - 增加clear 伪目标
用法:
在linux中写make clear 指令自动删除xx文件
make clear