Makefile是工程管理的一个工具,是嵌入式linux工程师必备的技能,Makefile使在linux整个程序的编译链接只需一个make命令就可以。那么Makefile文件是一个什么样的文件?下面对其文件内容做一个说明,Makefile文件描述了整个程序的编译链接规则,其内容主要有变量和规则两部分组成,规则是其最重要的部分。例如下面一条规则
xxx.elf:xxx.o
arm-linux-ld -Txxx.lds -o xxx.elf xxx.o
xxx.elf 称作目标 xxx.o 称作依赖,依赖可以有多个。
在Makfile中只有命令而没有依赖的目标称作伪目标(phony target) 例如
.PHONY : clean
clean :
rm -f xxx.o xxx.o xxx
" .PHONY : " 用于将clean声明为伪目标。
文件含有多条规则时,可以用make +目标的方法单独执行该条规则,若没有指定规则,则会默认执行第一条规则,第一条规则中的目标称为最终目标。
在Makefile中系统自带了一些变量 例如 :
$^ 代表所有的依赖文件
$@ 代表目标
$< 代表第一条依赖
除了系统自带的变量外,用户可以自定义变量,例如
使用变量前
xxx.elf: aaa.o bbb.o
arm-linux-ld -Txxx.lds -o xxx.elf aaa.o bbb.o
使用变量后
obj=aaa.o bbb.o
xxx.elf: $(obj)
arm-linux-ld -Txxx.lds -o xxx.elf $(obj)
合理使用变量可以增强Makefile文件的可读性
最后加一点Makefile文件的使用技巧
# 注释符
@加在规则前可以去回显
make命令默认调用的文件为 Makefile 或makefile 当然我们也可以使用其他的文件名 使用方法 make -f FileName