博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习makefile(1)
阅读量:6969 次
发布时间:2019-06-27

本文共 1533 字,大约阅读时间需要 5 分钟。

最近,在了解并学习makefile。

刚接触makefile这个词是在这篇博客中看到的。

 

先不说我看完篇随笔有什么收获,但它让我觉得,我学习的内容是如此的少之又少。

makefile?

上面提及的随笔中,第一次让我接触makefile,而之前我只接触过make这个命令。

后来,有人向我介绍了一本书,书名叫《unix编程艺术》。

这本书有一个小节是介绍makefile与make的,

很多常用的典型makefile中根本没有文件依赖关系。

它们是将某些开发者想要自动化的小过程捆绑在一起的方法。

接下来,书上引用了Stuatr Feldman的话:

生成目标非文件,这早已有之。

“make all” 和“clean”是早些日子我自己的习惯。

有一个老Unix笑话,输入“make love”,

输出是“Don't know how to make love”。

提及的随笔中提及到一篇叫《和我一起学makefile》的文章,

这篇文章能更好的帮助我入门makefile,

可是,大体地看完这些,都不明白,makefile究竟是在项目中起着什么作用,又是怎么使用的。

makefile与make都有“make”,但是,make与makefile有什么区别呢。??

唉,看到这个问题你们别笑我。真心不懂。

努力寻找答案。最直接的就是问别人。

Make之于Makefile。

相当于一个程序的配置文件和程序本身的关系。
也相当于脚本与脚本解释器的关系。

这个答案让我对makefile与make有了一些基本的认识。

而上面的加解更让我明白了,虽然还不是很系统。

make是makefile的解释执行程序。

makefile的作用就是“自动组建”的脚步,make这个程序通过你写的makefile来知道执行什么编译器编译什么文件用什么选项来编译出什么目标。
以至于一个非常庞大的项目,你只需要一个make命令就能组建完成。

以上是较为详细的说法。下面一句又把上面的内容简化一下:

make是系统提供的一个可执行程序

而makefile是程序员针对自己的开发项目书写的一个文本文件
make解释makefile的内容,按程序员的期望完成编译、链接任务

如此抽象的说法,有人就提供了一些形象的比喻:

make是程序,makefile是程序的配置文件……

这就像你玩游戏的时候,双击图标,这个东西就相当与make,是真正可以执行的程序,进入游戏以后,你要读自己的存档,要根据这个存档来继续游戏,这个存档就相当与makefile……
在执行meke的时候,make程序会自动的查找makefile这个文件,如果没有这个文件,make无法执行……

上面的例子是以游戏说明关系,而下面则是以演奏乐曲的流程为例。

make是乐团指挥,

makefile是它看的总谱
总谱中描述了各个乐手(象编译器、链接器等)的演奏分谱

乐园指挥按总谱挥动指挥棒,调度各位乐手演奏(编译器、链接器按序工作),。。。。直到一部乐曲(一个多件源文件、目标文件、库文件生成的程序)诞生

下面双以一部电影的始与终来说明,其实这三个例子都很形象的:

导演====make

剧本====makefile
演员====MAKE调用的外部命令,如编译器、链接器等

电影====生成的程序

其实看完上面的解说后,我可以明白make和makefile是怎么一回事了,

makefile其实是一个文本文件,
而make其实是执行该文本文件。

 

了解了它是什么,就要知道它在怎么干!~

 

 

转载于:https://www.cnblogs.com/feminping/archive/2012/07/31/5_makefile.html

你可能感兴趣的文章
Symfony2出现加载WEB调试工具栏错误
查看>>
PHP中文件下载
查看>>
吐槽!吐槽!
查看>>
shell 信号捕捉处理
查看>>
基于虚拟主机的FTP配置
查看>>
分享一个iptables防火墙的脚本和防御ddos***的脚本
查看>>
异步通知和设备定位
查看>>
08-drbd裂脑说明及裂脑的自动和人工解决实际策略
查看>>
ubuntu17 下phpstorm无法输入中文问题处理
查看>>
js事件跨浏览器解决问题的学习与总结
查看>>
我的友情链接
查看>>
服务器生成文件后,客户端直接响应下载
查看>>
我的友情链接
查看>>
域控之间角色转换(BDC转换为PDC)
查看>>
SCVMM 2012 R2运维管理十四之:VMM中网络概述
查看>>
多功能PCIE交换机之一:概述
查看>>
让IT工作者过度劳累的12个坏习惯
查看>>
关于bug分析与异常处理的一些思考
查看>>
MySQL 高可用架构在业务层面的分析研究
查看>>
微信关注即可使用 Wi-Fi,取消关注即断网的路由器实现的流程原理以及步骤
查看>>