驱动开发-Makefile
Makefile编程
Makefile规则
Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,
格式:
1 | target... : prerequisites... #目标……: 依赖文件集合…… |
1️⃣target
就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)。
2️⃣prerequisites
就是,要生成那个target
所需要的文件或是目标。target
这一个或多个的目标文件依赖于prerequisites
中的文件,其生成规则定义在command
中
3️⃣command
也就是make需要执行的命令。(任意的Shell命令)
4️⃣==命令列表中的每条命令必须以TAB键开始,不能使用空格==,否则会报错!!!
例子:
1 |
**注释:**注释用“#”字符,如需使用
**换行:**反斜杠(\)是换行符的意思
Makefile变量
命名规则:
变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不能包括“:”、“#”、“=”或是空字符(空格、回车等)
变量是大小写敏感的,“foo”、“Foo”和“FOO”是三个不同的变量名。
变量的定义:
- 使用“
:=
”操作符- 特点:这个定义方法只能使用该变量定义之前已经定义好的变量,但是不能使用之后定义的变量。
- 例子:
x := foo/ y := $(x) bar/ x := later
变量的使用:
- ==变量在声明时需要给予初值==
- 使用时,需要给在变量名前加上“$”符号,但最好**用小括号“()”**或是大括号“{}”把变量给包括起来,例如:
$(FOO)
追加变量值:
“
+=
”操作符给变量追加值1
2
3objects = main.o foo.o bar.o utils.o
objects += another.o
#$(objects)值变成:“main.o foo.o bar.o utils.o another.o”(
i.mx6ull开发板Makefile
1 | KERNELDIR := /home/arm-linux/MX6U/linux-core |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kevin's blogs!