【Makefile由浅入深完全学习记录1】认识make和makefile
学习交流加
- 个人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、总结
- make只是一个特殊功能的应用程序
- make用于根据指定的目标执行相关的命令
- Makefile用于定义目标和实现目标所需要的命令
- Makefile有特定的语法规则,支持函数的定义和调用
想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
本学习记录完全来源于狄泰软件学院的相关课程,可以加我q:1126137994或者Q群:199546072 ,给你推荐更多学习课程。
【Makefile由浅入深完全学习记录1】认识make和makefile相关推荐
- 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上
抓住基础,学习更多技术,迎接挑战,加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 上一篇文章学习了makefile中的预定义变量的使用,今天来继续学习makefil ...
- 【Makefile由浅入深完全学习记录3】伪目标的引入
只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...
- 【Makefile由浅入深完全学习记录2】初识 makefile 的结构
继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...
- 【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下
加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 继续上一篇文章关于变量的学习! 1.环境变量(全局变量) -makefile中能够直接使用环境变量的值 如果make ...
- 【Makefile由浅入深完全学习记录4】变量和不同的赋值方式
今天来学习Makefile中变量的不同的赋值方式!努力的意义就是让贫穷不再限制你的想象!加qq共同学习交流1126137994 1.概念 makefile中支持程序设计中变量的概念 makefile中 ...
- 【Makefile由浅入深完全学习记录8】条件判断语句
加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C+ ...
- 【Makefile由浅入深完全学习记录5】预定义变量的使用
今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我 ...
- Android socket 学习记录 之 执行new socket(ip, port)程序崩溃
这段时间在学习Android的socket编程,我不是专做APP的,做的是bootloader.驱动.hal.framework这个线的,也就是系统搭建和功能优化设计.为了打通这整条线,为此学习了不少 ...
- MOOSE多物理场耦合平台入门学习记录一(稳态热传导程序实例)
MOOSE多物理场耦合平台入门学习记录 MOOSE的简介 MOOSE的安装 Linux和Mac Windows MOOSE程序的一般开发流程-以导热微分方程为例 简单问题的有限元处理 MOOSE程序的 ...
最新文章
- C# 栈 、队列的概念
- python 数据分析学什么-利用Python做数据分析 需要学习哪些知识
- 【测试】物料帐单/多级差异流转测试
- c++ 指向类的静态成员的指针
- BitNami一键安装Redmine
- 原来MySQl就是这样工作的
- java 图片旋转 翻转 镜像处理_Java OpenCV实现图像镜像翻转效果
- 怎么更好掌握Web前端技术?JS的跨域是怎么回事?
- ubuntu16.04 使用 rc.local 自启动加载 python 脚本
- 微信小程序人脸识别功能(wx.faceDetect)、带扫脸动画、人脸图片获取(upng.js)及位置展示
- laravel 房源
- 工作近半年的一些个人感悟
- Hdu--3966(树链剖分,线段树 or 树状数组)
- 使用JMeter测试你的EJB
- laravel跨域问题
- 基于C++的医院管理系统设计与实现
- Numpy中的数组、行/列向量及其之间的转化
- python 界面一
- php开发愤怒的小鸟,如何使用纯CSS实现一只黑色的愤怒小鸟(附代码)
- STM32 第5讲 MDK下载安装注册及配置
热门文章
- spring学习(33):id和name
- html:(39):块级元素和内联块级元素
- php金额类,PHP类-人民币金额转大写
- [Violation] Added non-passive event listener to a scroll-blocking ‘mousewheel‘ event.
- 智能机器人及其应用ppt课件_机器人视觉技术在建筑智能化生产中的应用
- 算法之快速排序(递归和非递归)
- 震惊!垃圾分类居然能用Python搞定!
- 我认为最节省时间的CSS命名规范
- 常用的方法论-PARR
- 35款让你爱不释手的网页元素PSD素材