学习交流加

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

今天开始学习项目又多了一项:Makefile由浅入深完全学习。之前做嵌入式Linux时,就一直在用make,但是对Makefile的理解一直都处于表面,看一些大型的代码工程的Makefile,也基本上只能看懂一点,索性,就来深入学习一下Makefile。

文章目录

  • 1、什么是make?为什么需要make?
  • 2、什么是Makefile?
  • 3、make和Makefile之间的关系
  • 4、编程示例
  • 5、总结

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"pwdls

执行make命令显示:

可见,当执行make命令时,他会直接调用顶层目标处相应的命令。

执行命令make tsst显示:

可见,当指定要执行的目标后,就会执行指定位置的目标所对应的命令!!!

5、总结

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

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

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

【Makefile由浅入深完全学习记录1】认识make和makefile相关推荐

  1. 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上

    抓住基础,学习更多技术,迎接挑战,加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 上一篇文章学习了makefile中的预定义变量的使用,今天来继续学习makefil ...

  2. 【Makefile由浅入深完全学习记录3】伪目标的引入

    只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...

  3. 【Makefile由浅入深完全学习记录2】初识 makefile 的结构

    继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...

  4. 【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下

    加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 继续上一篇文章关于变量的学习! 1.环境变量(全局变量) -makefile中能够直接使用环境变量的值 如果make ...

  5. 【Makefile由浅入深完全学习记录4】变量和不同的赋值方式

    今天来学习Makefile中变量的不同的赋值方式!努力的意义就是让贫穷不再限制你的想象!加qq共同学习交流1126137994 1.概念 makefile中支持程序设计中变量的概念 makefile中 ...

  6. 【Makefile由浅入深完全学习记录8】条件判断语句

    加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C+ ...

  7. 【Makefile由浅入深完全学习记录5】预定义变量的使用

    今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我 ...

  8. Android socket 学习记录 之 执行new socket(ip, port)程序崩溃

    这段时间在学习Android的socket编程,我不是专做APP的,做的是bootloader.驱动.hal.framework这个线的,也就是系统搭建和功能优化设计.为了打通这整条线,为此学习了不少 ...

  9. MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)

    MOOSE多物理场耦合平台入门学习记录 MOOSE的简介 MOOSE的安装 Linux和Mac Windows MOOSE程序的一般开发流程-以导热微分方程为例 简单问题的有限元处理 MOOSE程序的 ...

最新文章

  1. C# 栈 、队列的概念
  2. python 数据分析学什么-利用Python做数据分析 需要学习哪些知识
  3. 【测试】物料帐单/多级差异流转测试
  4. c++ 指向类的静态成员的指针
  5. BitNami一键安装Redmine
  6. 原来MySQl就是这样工作的
  7. java 图片旋转 翻转 镜像处理_Java OpenCV实现图像镜像翻转效果
  8. 怎么更好掌握Web前端技术?JS的跨域是怎么回事?
  9. ubuntu16.04 使用 rc.local 自启动加载 python 脚本
  10. 微信小程序人脸识别功能(wx.faceDetect)、带扫脸动画、人脸图片获取(upng.js)及位置展示
  11. laravel 房源
  12. 工作近半年的一些个人感悟
  13. Hdu--3966(树链剖分,线段树 or 树状数组)
  14. 使用JMeter测试你的EJB
  15. laravel跨域问题
  16. 基于C++的医院管理系统设计与实现
  17. Numpy中的数组、行/列向量及其之间的转化
  18. python 界面一
  19. php开发愤怒的小鸟,如何使用纯CSS实现一只黑色的愤怒小鸟(附代码)
  20. STM32 第5讲 MDK下载安装注册及配置

热门文章

  1. spring学习(33):id和name
  2. html:(39):块级元素和内联块级元素
  3. php金额类,PHP类-人民币金额转大写
  4. [Violation] Added non-passive event listener to a scroll-blocking ‘mousewheel‘ event.
  5. 智能机器人及其应用ppt课件_机器人视觉技术在建筑智能化生产中的应用
  6. 算法之快速排序(递归和非递归)
  7. 震惊!垃圾分类居然能用Python搞定!
  8. 我认为最节省时间的CSS命名规范
  9. 常用的方法论-PARR
  10. 35款让你爱不释手的网页元素PSD素材