Linux内核完全注释 阅读笔记:3.6、Make程序和Makefile文件
 2018.10.27    |      Linux内核完全注释    |     AilsonJack    |     暂无评论    |     427 views
By: Ailson Jack
Date: 2018-09-20
个人博客: http://www.only2fire.com/
<p style="text-indent: 2em;">最近这段时间一直在学习minix 文件系统1.0的内容,想着在Windows上通过自己编写的软件直接将文件传输到Linux 0.11的硬盘上(功能类似于FTP工具),这样就不需要自己搭一个虚拟机这么麻烦了,而且文件交互更方便,目前完成了基础功能,等完全弄好之后,会在我的博客上进行发布的,敬请关注<img src="/UEditor/dialogs/emotion/images/face/i_f03.gif"/>。下面进入本文的内容。<br/></p><p style="text-indent: 2em;">Makefile(或makefile)文件是make工具程序的配置文件。make工具程序的主要用途是能自动的决定一个含有很多源程序文件的大型程序中哪个文件需要被重新编译。Makefile的使用比较复杂,这里只作简单的介绍,详细说明请参考GNU make使用手册。<br/></p><p style="text-indent: 2em;">Makefile用于告诉make要做些什么工作。make的执行过程分为两个不同的阶段。在第一个阶段,它读取所有的Makefile文件以及包含的Makefile文件等,记录所有的变量及其值、隐式的或显式的规则,并构造出所有目标对象及其先决条件的一幅全景图。在第二阶段期间,make就使用这些内部结构来确定哪个目标对象需要被重建,并且使用相应的规则来操作。<br/></p><p style="text-indent: 2em;">当make重新编译程序时,每个修改过的C代码文件必须被重新编译。如果一个头文件被修改过了,那么为了确保正确,每一个包含该头文件的C代码程序都将被重新编译。每次编译操作都产生一个与源程序对应的目标文件。最终,如果任何源代码文件被编译过了,那么所有的目标文件不管是刚编译完的还是以前就编译好的必须连接在一起以生成新的可执行文件。<br/></p><p style="text-indent: 2em;">简单的Makefile文件含有一些规则,这些规则具有如下形式:<br/><span style="color: rgb(0, 112, 192);">目标(target)…:先决条件(prerequisites)…<br/>&nbsp;&nbsp;&nbsp;&nbsp;命令(command)<br/>&nbsp;&nbsp;&nbsp;&nbsp;...</span></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">&nbsp;&nbsp;...</span><br/></p><p style="text-indent: 2em;">其中’目标’对象通常是程序生成的一个文件的名称,例如是一个可执行文件或目标文件。目标也可以是所要采取活动的名字,比如’清除’(clean)。’先决条件’是一个或多个文件名,是用作产生目标的输入条件。通常一个目标依赖几个文件。而’命令’是make需要执行的操作。一个规则可以有多个命令,每一个命令自成一行。<span style="color: rgb(255, 0, 0);">注意:你需要在每个命令行之前键入一个制表符(也就是tab)!</span><br/></p><p style="text-indent: 2em;">自动变量是一种在命令行上根据具体情况能被自动替换的变量。自动变量的值是基于目标对象及其先决条件而在命令执行前设置的。这里列举一些比较常用的自动变量:<br/></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">$^:表示规则的所有先决条件,包括它们所处目录的名称;<br/></span></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">$&lt;:表示规则中的第一个先决条件;<br/></span></p><p style="text-indent: 2em;"><span style="color: rgb(0, 112, 192);">$@:表示目标对象。</span><br/></p>
欢迎关注博主的公众号呀,精彩内容随时掌握:
热情邀请仔细浏览下博客中的广告,万一有对自己有用或感兴趣的呢。◕ᴗ◕。。
如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^,当然了能够赞赏博主,那就非常感谢啦!
注: 转载请注明出处,谢谢!^_^
暂无评论,要不要来个沙发
发表评论

 
Copyright © 2015~2023  说好一起走   保留所有权利   |  百度统计  蜀ICP备15004292号