1、makefile文件内部
1.1、表达式
$^ : 所有源文件 ARM-GCC
$@ : 全路径目标文件
$? : 源文件
$* : 除去扩展名全路径目标文件
$< : 源文件(只在隐含规则中有效)
$? : 依赖文件中被改变的文件
$(@:_elf=) : 去掉目标文件中_elf字样
% : 表示字符通配符,一切字符
//以下程序
.PHONY : clean
clean :
rm *.dis
//通常情况下,若没有.PHONY : clean,那么程序只有在进行make clean的时候clean下的命令才会执行,而加上.PHONY : clean的时候,clean在每次make命令的时候就会运行,也即是给予clean一个假想的目标,并且该目标永远是处于更新状态,以此达到没有依赖文件也能每次进行make的目的
clean :
rm *.dis
tags : clean
rm *.bin *.lib
若执行make clean则只执行clean下面的语句,若执行make tags则先执行clean再执行tags
export XX XXX
将XX XXX变量传递给子make,也可以用-e选项进行变量的传递
函数的调用:$(function argument)
例如:$(hellow 1 2 3)
immediate = deferred
immediate := deferred
immediate ?= deferred
immediate += deferred
define immediate
deferred
endef
:= ; 立即启用变量
?= ; 若前面已经定义变量,此处不进行定义
= ; 变量在使用的时候才进行赋值
2、链接文件
2.1、汇编源文件
ENTRY:运行一个程序时第一个被执行到的指令的入口地址,即指定汇编程序的入口
.type __lookup_processor_type, %function 用来说明标号__lookup_processor_type是一个函数
3、makefile常用函数
字符串查找替换
$(subst <from>,<to>,<text>)
把text中的from字符串替换为to字符串
例:$(subst he,HE,hellow)
把hellow中的he替换为HE
模式查找替换
$(patsubst PATTERN,REPLACEMENT,TEXT)
TEXT中符合PATTERN格式的字符串统统替换为REPLACEMENT
例:$(patsubst %.s,%.asm,list.s test.s)
把list.s test.s替换为list.asm test.asm
合并空格
$(strip STRINT)
把STRINT里面的多个连续空格合并为一个
例:$(strip 1 2 3 4)
返回为1 2 3 4
字符串查找
$(findstring FIND,IN)
从IN里面查找FIND字符串,找到则返回FIND,否则返回空
例:$(findstring he,hellow)
该例子返回he字符串
更多请查看这里:http://download.csdn.net/detail/u013904227/9506313