【Makefile由浅入深完全学习记录1】认识make和makefile
今天开始学习项目又多了一项:Makefile由浅入深完全学习。之前做嵌入式Linux时,就一直在用make,但是对Makefile的理解一直都处于表面,看一些大型的代码工程的Makefile,也基本上只能看懂一点,索性,就来深入学习一下Makefile。
1、什么是make?为什么需要make?
make是一个应用程序
*make的作用:
- 解析源码程序之间的依赖的关系
很多源码程序的文件是非常多的,而且那些文件之间大多是有依赖关系的,make就是可以解析这些依赖的关系 根据依赖关系自动维护编译工作
因为在我们编译大型源码的时候,需要编译很多的程序,加入我们的程序在编译到一大半的时候,有一个程序报错停止编译了,那么我们就需要改错,然后重新make,重新make后,它会自动从上次编译报错的地方接着编译,而不需要从头开始编译,这样就可以节省很多时间!!执行宿主操作系统中的各种命令
Makefile其实可以理解为一种脚本,里面大多是执行相关宿主操作系统的命令
2、什么是Makefile?
Makefile是一个描述文件
Makefile的作用:
- 定义一系列的规则来指定源文件的编译顺序
- 拥有特定的语法规则,支持函数定义和函数调用
- 能够直接集成操作系统中的各种命令
3、make和Makefile之间的关系
Makefile中的描述用于指导make程序如何完成工作 ;make根据Makefile中的规则执行命令,完成编译输出。
下面给一个最简单的make示例让我们理解一下:
注意: 目标后的命令,用tab键隔开!!!
make程序的使用示例:
make -f mf.txt hello
说明:以hello关键字作为目标查找mf.txt文件,并执行hello处的命令。
上面的使用方法较为复杂,一般情况下我们是这样使用的:
make hello
功能说明:
以hello关键字作为目标查找Makefile或者makefile文件,并执行hello处的命令
或者:
make
功能说明:
直接查找makefile或者Makefile文件中,最顶层目标,并执行最顶层目标的命令。
4、编程示例
下面是一个简单的Makefile文件:
hello :
echo "hello Makefile"
test :
echo "test"
pwd
ls
执行make命令显示:
可见,当执行make命令时,他会直接调用顶层目标处相应的命令。
执行命令make tsst显示:
可见,当指定要执行的目标后,就会执行指定位置的目标所对应的命令!!!
5、总结
- make只是一个特殊功能的应用程序
- make用于根据指定的目标执行相关的命令
- Makefile用于定义目标和实现目标所需要的命令
- Makefile有特定的语法规则,支持函数的定义和调用
想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
本学习记录完全来源于狄泰软件学院的相关课程,可以加我q:1126137994或者Q群:199546072 ,给你推荐更多学习课程。
下一篇: make工程管理器之makefile详解