- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
W2 实验二 Makefile实验.doc
实验二 Makefile实验
【实验目的】
1、了解Makefile的基本概念和基本结构
2、初步掌握编写简单Makefile的方法
3、了解递归Make的编译过程
4、初步掌握利用GNU Make编译应用程序的方法
【实验原理】
在Linux或Unix环境下,对于只含有几个源代码文件的小程序(如hello.c)的编译,可以手工键入gcc命令对源代码文件逐个进行编译;然而在大型的项目开发中,可能涉及几十到几百个源文件,采用手工键入的方式进行编译,则非常不方便,而且一旦修改了源代码,尤其头文件发生了的修改,采用手工方式进行编译和维护的工作量相当大,而且容易出错。所以在Linux或Unix环境下,人们通常利用GNU make工具来自动完成应用程序的维护和编译工作。实际上,GNU make工具通过一个称为Makefile的文件来完成对应用程序的自动维护和编译工作。Makefile是按照某种脚本语法编写的文本文件,而GNU make能够对Makefile中指令Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作GNU make工作时的执行步骤下:
1、读入所有的Makefile。2、读入被include的其它Makefile。3、初始化文件中的变量。4、推导隐晦规则,并分析所有规则。5、为所有的目标文件创建依赖关系链。6、根据依赖关系,决定哪些目标要重新生成。7、执行生成命令。
1-5步为第一个阶段,6-7为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。但make并不会完全马上展开,make使用的是拖延战术,如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部展开。下面对makefile的相关问题进行简单介绍:
1、Makefile的基本结构
Makefile的一般结构:
target……:dependency……
command……
结构中各部分的含义:
(1)、target(目标):一个目标文件可以是Object,也可以是执行文件。还可以是一个标签(Label)要生成target)所依赖哪些文件
(3)、command(命令):创建项目时需要运行的shell命令(注:命令(command)部分的每行的缩进必须要使用Tab而不能使用多个空格)。
Makefile实际上是一个文件的依赖关系,也就是说, target这一个或多个的目标文件依赖于中的文件,其生成规则定义在command中如果有一个以上的文件比target)文件要新的话,command)所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。C源文件test.,该源文件包含有自定义的头文件test.h,则目标文件test.otest.c和test.h。只希望利用g命令来生成test.o目标文件makefile来定义test.o的创建规则:
从上面的例子注意到,第一个字符为#的行注释行。第一个非注释行指定test.o为目标,并且依赖于test.和test.h文件。随后的行指定了如何从目标所依赖的文件建立目标。 test.c或test.h文件在编译之后又被修改,则make工具可自动重新编译test.o,如果在前后两次test.c和test.h均没有被修改,而且test.o还存在的话,就没有必要重新编译。这种依赖make工具可避免许多不必要的编译工makefile文件中可定义多个目标,利用make target命令可指定要编译的目标,如果不指定目标makefile中定义有clean目标,可用来清除编译过程中的中间文件
运行make clean时,执行rm –f*.o命令,删除编译过程中的所有中间文件。
(1)、显式规则:显式规则说明如何生成一个或多个的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。
(2)、变量定义。在Makefile中可以定义一系列的变量,变量一般都是字符串,当Makefile被执行时,变量的值会被扩展到相应的引用位置上。
(3)、隐含规则“#”字符,如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“\#”。
2.1 Makefile中的变量
(1)、Makefile中定义的变量,与C/C++语言中的宏一样,代表一个文本字串,在Makefile被执行时候变量会自动地展开在所使用的地方。Makefile中的变量可以使用在“目标”,“依赖目标”,“命令”或Makefile的其它部分中。
(2)、Makefile中变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#
您可能关注的文档
- EDA期末考试题大全.doc
- eda考试题全集.doc
- flash期末考试复习提纲.doc
- GB T 601 标准溶液配制方法.doc
- GCT数学基础练习题十.doc
- ghost安装系统教程.doc
- How much is it教学设计.doc
- ISA的HTTP过滤功能.doc
- JN0-660 最新考试题.doc
- KUM-CO-012内部订单主数据维护操作手册V1.doc
- 江苏省灌云高级中学2023-2024学年高三上学期第一次月考地理试题含答案.docx
- 备战2024年高考物理一轮重难点复习 第十三章 近代物理.docx
- 江苏省高邮市一中2021-2022学年高三上学期第一次月考语文试题(原卷版).docx
- 江苏省华罗庚中学2023-2024学年高三上学期12月阶段检测数学试卷含答案.docx
- 江苏省海门中学2023-2024学年高三上学期第一次调研考试地理试题及答案.docx
- 备战2024年高考物理一轮重难点复习 第九章 恒定电流.docx
- 江苏省高邮市2023-2024学年高三下学期3月学情调研数学试题含答案.docx
- 备战2024年高考物理一轮重难点复习 实验十一:探究影响感应电流方向的因素.docx
- 备战2024年高考物理一轮重难点复习 实验三:验证平行四边形定则.docx
- 备战2024年高考物理一轮重难点复习 第十四章 光.docx
文档评论(0)