makefile的编写

makefile的编写

ID:20792588

大小:701.00 KB

页数:39页

时间:2018-10-15

makefile的编写_第1页
makefile的编写_第2页
makefile的编写_第3页
makefile的编写_第4页
makefile的编写_第5页
资源描述:

《makefile的编写》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Makefile编写目的:掌握make的基本语法,使用make编译程序。8.1.1Make概述makefile定义整个工程的编译规则一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。自动化编译只需要一个make命令,整个工程完全自动编译;make是一个命令工具,是一个解释makefile中指令的命令工具;一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的make。可见,ma

2、kefile都成为了一种在工程方面的编译方法。Makefile里主要有什么显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。4、文件指示。其包括了三个

3、部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。5、注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符。如果你要在你的Makefile中使用“#”字符,可以用反斜框进行转义,如:“#”。8.1.2关于程序的编译和链接无论是C、C++,首先要把源文件编译成中间代码文件,在Windows下是.obj文件,UNIX下是.o文件,即目标文件,这个动作叫

4、做编译(compile)。然后再把大量的目标文件链接成执行文件,这个动作叫作链接(link)。编译时,编译器检查语法,函数与变量的声明是否正确。对于声明,通常需要你告诉编译器头文件所在的位置(头文件中应该只是声明,而定义应该放在源文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。一般来说,每个源文件可以生成一个中间目标文件(.o文件或是.obj文件)。关于程序的编译和链接链接时,主要是找到函数和全局变量的定义。链接器并不管函数所在的源文件,只管函数的中间目标文件(ObjectFile)。在大多数时候,由于源文件太多,编译生成的目标文件太多,而在链接时需要明显地指出中间目标文件名

5、,这对于编译很不方便,所以,我们要给中间目标文件打个包,在Windows下这种包叫“库文件”(LibraryFile),也就是.lib文件,在UNIX下,是ArchiveFile,也就是.a文件或.so下面是一个包含三个文件的工程8.1.3准备文件file1.c#include#include"file2.h"intmain(){printf("printfile1");File2Print();return0;}返回准备文件file2.c#include"file2.h"voidFile2Print(){printf("Printfile2");}返回准备文件f

6、ile2.h#ifndefFILE2_H_#defineFILE2_H_#includevoidFile2Print();#endif返回8.1.4Makefile里的主要规则target...:prerequisites...command...target是一个目标文件,可以是ObjectFile,也可以是执行文件。还可以是一个标签(伪目标)。prerequisites是要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令)文件的依赖关系,也就是说,target……是需要生成的一个或多个文件,它们依赖于prer

7、equisites......中列出的文件,通过执行command来生成target.....。一个规则可以有多个命令行,每一条命令占一行。注意:每一个命令行必须以[Tab]字符开始,[Tab]字符告诉make此行是一个命令行。make按照命令完成相应的动作。这也是书写Makefile中容易产生,而且比较隐蔽的错误。这就是Makefile的规则,也是Makefile中最核心的内容。helloworld:file1.ofi

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

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

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