1、什么是Makefile
在嵌入式软件开发领域,使用 make 工具构建开发环境是非常常见的。而要使用 make 工具,就需要编写 Makefile 文件来定义一系列规则,指定需要先编译、后编译以及重新编译的文件。
使用 Makefile 的好处是实现了“自动化编译”,只需要一个 make 命令,整个工程就能够自动编译,大大提高了软件开发效率。
2、Makefile的规则
2.1 命名规则
通常情况下,无论是使用"Makefile"还是"makefile"作为文件名都可以,常见的是使用"Makefile"作为文件名。
当然你也可以使用其他名称(例如"My_makefile")来命名Makefile,但在使用时应该加上-f选项,如:
make -f My_makefile
2.2 书写规则
目标 (target):指的是运行make生成什么,可以是执行文件,还可以是一个标签
依赖(prerequisites) : 要生成那个 target 所需要的文件或是目标
命令(command ):make 需要执行的命令
target : prerequisites
command
# 例如
test: test.c
gcc test.c -o test
注意,命令所在的行必须是以 Tab 开头。很多初学者容易犯的“低级”错误是,用空格代替开头的Tab 键。
3、Makefile的工作原理
3.1 目标文件的生成
先检查生成目标文件所需要的依赖文件是否存在,如果不存在,则先按规则生成依赖文件,再生成目标文件。
例如:
目标文件是test,依赖所有的 ".o" 文件,如果没有检测到"main.o fun.o drv.o" 文件,则根据".o"的依赖规则, 让“main.c fun.c drv.c”文件生成对应的“ .o”文件,
之后再生成test文件
3.2 目标文件的更新
任何一个依赖文件有更新了,或者依赖文件的时间戳比目标文件新,则重新生成目标文件
以上是对Makefile基础知识的介绍,后面的文章将会结合例子,来介绍Makefile的具体用法。