- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux Makefile实验
实验二 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 文件定义了一系列的规则来指定哪些文
件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操
作。GNUmake 工作时的执行步骤如下:
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)。
(2)、dependency (依赖):要生成目标文件 (target)所依赖哪些文件
(3)、command (命令):创建项目时需要运行的shell 命令 (注:命令 (command)部分
的每行的缩进必须要使用Tab而不能使用多个空格)。
Makefile 实际上是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依
赖于dependency 中的文件,其生成规则定义在命令command 中。如果依赖文件(dependency)
中有一个以上的文件比目标 (target)文件要新的话,shell 命令 (command)所定义的命令
1
就会被执行。这就是Makefile 的规则。也就是Makefile 中最核心的内容。
例如,假设有一个C 源文件test.c,该源文件包含有自定义的头文件test.h,则目标文件
test.o 明确依赖于两个源文件:test.c 和test.h。如果只希望利用gcc命令来生成test.o 目标文
件,这时,就可以利用如下的makefile 来定义test.o 的创建规则:
#Thismakefilejust isa example.
test.o:test.ctest.h
gcc–ctest.c
从上面的例子注意到,第一个字符为#的行表示注释行。第一个非注释行指定test.o 为
目标,并且依赖于test.c 和test.h 文件。随后的行指定了如何从目标所依赖的文件建立目标。
当test.c 或test.h 文件在编译之后又被修改,则make 工具可自动重新编译test.o,如果
在前后两次编译之间,test.c 和test.h 均没有被修改,而且test.o还存在的话,就没有必要重
新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make
工具可避免许多不必要的编译工作。
一个makefile 文件中可
您可能关注的文档
- 2017美国本科刑事司法专业ACT综合均分列表.pdf
- 2017美国本科化学专业TOEFL单项要求列表.pdf
- 2017美国本科运动训练专业录取率列表.pdf
- 元件辨认PCBA.ppt
- 2017美国本科金融专业录取率列表.pdf
- 2017语言文字规范化计划.doc
- 2017面向对象基础及java语言课程设计选题说明.doc
- 2常量及变量定义和赋值语句.pdf
- 430入门之中断.docx
- 4设备维护保养管理规定.doc
- DB23_T 3866-2024冰上龙舟赛事组织服务规范.docx
- DB32 2163-2012 棉纱单位可比综合电耗限额及计算方法.docx
- DB32∕T 2429-2013 棉花田间生长发育观察记载规范.docx
- DB23_T 3820-2024 工业互联网综合平台数据质量管理规范.docx
- DB23_T 3474-2023非煤智慧矿山信息系统技术规范.docx
- DB3201_T 1106-2022 工程地质层划分技术规范.docx
- DB33T 2515-2022公共机构“零碳”管理与评价规范.docx
- DB3301_T 0415-2023 装修垃圾收运处置管理规范.docx
- DB3311/T 106―2019“丽水山居”民宿服务要求与评价规范.docx
- DB3201T 1127-2022 慈善捐赠受赠管理规范.docx
最近下载
- 金蝶云苍穹考试认证理论考题汇总(精华版).pdf VIP
- 钢梯设计图集15J401.pdf VIP
- 在项目规划评审会上的致辞发言3.docx
- 建筑工程图集 G410-1~2:1.5m×6.0m预应力混凝土屋面板(2004年合订本).pdf VIP
- 《康复评定技术》课件——第十七章 常见神经疾病的评定技术.ppt VIP
- 山东省水产品出口贸易现状、问题及对策分析.docx VIP
- 2025年上海黄浦区中考模拟语文试卷(含答案) .pdf VIP
- 《综合与实践:白昼时长规律的探究》教案.docx VIP
- 2025年妇产科护理技术规范.pdf VIP
- 施工现场高温季节安全防护与防暑管理培训.pptx VIP
文档评论(0)