学习交流加

  • 个人qq:
    1126137994
  • 个人微信:
    liu1126137994
  • 学习交流资源分享qq群:
    962535112

今天开始学习项目又多了一项: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、总结

  1. make只是一个特殊功能的应用程序
  2. make用于根据指定的目标执行相关的命令
  3. Makefile用于定义目标和实现目标所需要的命令
  4. Makefile有特定的语法规则,支持函数的定义和调用

想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

本学习记录完全来源于狄泰软件学院的相关课程,可以加我q:1126137994或者Q群:199546072 ,给你推荐更多学习课程。