Linux_Makefile实验1

Linux_Makefile实验1

ID:46391819

大小:56.75 KB

页数:9页

时间:2019-11-23

Linux_Makefile实验1_第1页
Linux_Makefile实验1_第2页
Linux_Makefile实验1_第3页
Linux_Makefile实验1_第4页
Linux_Makefile实验1_第5页
资源描述:

《Linux_Makefile实验1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验二Makefile实验【实验目的】1、了解Makefile的基本概念和基本结构2、初步掌握编写简单Makefile的方法3、了解递归Make的编译过程4、初步掌握利用GNUMake编译应用程序的方法【实验原理】在Linux或Unix环境下,对于只含有几个源代码文件的小程序(如hello.c)的编译,可以手工键入gcc命令对源代码文件逐个进行编译;然而在大型的项目开发中,可能涉及几十到几百个源文件,采用手工键入的方式进行编译,则非常不方便,而且一旦修改了源代码,尤其头文件发生了的修改,采用手工方式进行编译和维护的工作量相当大,而且容易出错。所以

2、在Linux或Unix环境下,人们通常利用GNUmake工具来自动完成应用程序的维护和编译工作。实际上,GNUmake工具通过一个称为Makefile的文件来完成对应用程序的自动维护和编译工作。Makefile是按照某种脚本语法编写的文本文件,而GNUmake能够对Makefile中指令进行解释并执行编译操作。Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。GNUmake工作时的执行步骤如下:1、读入所有的Makefile。2、读入被include的其它Make

3、file。3、初始化文件中的变量。4、推导隐晦规则,并分析所有规则。5、为所有的目标文件创建依赖关系链。6、根据依赖关系,决定哪些目标要重新生成。7、执行生成命令。1-5步为第一个阶段,6-7为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make会把其展开在使用的位置。但make并不会完全马上展开,make使用的是拖延战术,如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部展开。下面对makefile的相关问题进行简单介绍:1、Makefile的基本结构Makefile的一般结构:target……:dep

4、endency……command……结构中各部分的含义:(1)、target(目标):一个目标文件,可以是Object文件,也可以是执行文件。还可以是一个标签(Label)。(2)、dependency(依赖):要生成目标文件(target)所依赖哪些文件(3)、command(命令):创建项目时需要运行的shell命令(注:命令(command)部分的每行的缩进必须要使用Tab而不能使用多个空格)。Makefile实际上是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于dependency中的文件,其生成规则定义在命令co

5、mmand中。如果依赖文件(dependency)中有一个以上的文件比目标(target)文件要新的话,shell命令(command)9所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。例如,假设有一个C源文件test.c,该源文件包含有自定义的头文件test.h,则目标文件test.o明确依赖于两个源文件:test.c和test.h。如果只希望利用gcc命令来生成test.o目标文件,这时,就可以利用如下的makefile来定义test.o的创建规则:#Thismakefilejustisaexamp

6、le.test.o:test.ctest.hgcc–ctest.c从上面的例子注意到,第一个字符为#的行表示注释行。第一个非注释行指定test.o为目标,并且依赖于test.c和test.h文件。随后的行指定了如何从目标所依赖的文件建立目标。当test.c或test.h文件在编译之后又被修改,则make工具可自动重新编译test.o,如果在前后两次编译之间,test.c和test.h均没有被修改,而且test.o还存在的话,就没有必要重新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make工具可避免许多不必要的编译工

7、作。一个makefile文件中可定义多个目标,利用maketarget命令可指定要编译的目标,如果不指定目标,则使用第一个目标。通常,makefile中定义有clean目标,可用来清除编译过程中的中间文件# This makefile just is a example.test.o: test.c test.hgcc -c  test.cclean:rm -f *.o运行makeclean时,执行rm–f*.o命令,删除编译过程中生成的所有中间文件。2、Makefile的基本内容Makefile一般包括包含:显式规则、隐晦规则、变量定义、文件指

8、示和注释等五个内容。(1)、显式规则:显式规则说明如何生成一个或多个的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。