makefile教程(中文版).pdf

所需积分/C币:43 2018-08-23 16:47:07 829KB PDF
收藏 收藏
举报

makefile教程(中文版).pdf
在此,我想多说关于程序编译的一些规沱和方法,一般来说,无论是 还是,首先要把源文件编译成中间代码文件,在 下也就是文件, 下是文件,即 ,这个动作 叫做编译( )。然后再把大量的 合成执行文件,这 个动作叫作链接() 编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对 于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该 只是声明,而定义应该放在 文件中),只要所有的语法正确 编译器就可以编译出中间目标文件。一般来说,每个源文件都应该对 应于一个中间目标文件(文件或是文件)。 链接时,主要是链接函数和全局变量,所以,我们可以使用这些屮间 目标文件(文件或是文件)来链接我们的应用程序。链接器 并不管函数所在的源文件,只管函数的中间目标文件( 在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而 在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所 以,我们要给中间目标文件打个包,在 下这种包叫“库文件” ,也就是文件,在下,是 也 就是文件。 总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成 执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被 声明。如果函数未被声明,编译器会给出一个警告,但可以生成 。而在链接程序时,链接器会在所有的 中找寻函数的 实现,如果找不到,那到就会报链接借误码( ),在 下,这种错误一般是 错误,意思说是说,链接器未能找 到函数的实现。你需要指定函数的 好,言归正传,的有许多的内容,闲言少叙,还是让我们 开始吧。 介绍 命令执行时,需要一个 文件,以告诉命令需要 怎么样的去编译和链接程序 首先,我们用一个示例来说明 的书写规则。以便给大家一个 感兴认识。这个示例来源于的使用手册,在这个示例中, 我们的工程有个文件,和个头文件,我们要写一个 来告诉 命令如何编译和链接这几个文件。我们的规则是: )如果这个工程没有编译过,那么我们的所有文件都要编译并被 链接。 )如果这个工程的某几个文件被修改,那么我们只编译被修改的 文件,并链接目标程序 )如果这个工程的头文件被改变了,那么我们需要编译引用了这几 个头文件的文件,并链接标程序 只要我们的 写得够好,所有的这一切,我们只用一个 命令就可以完成, 命令会自动智能地根据当前的文件修改的情 况来确定哪些文件需要重编译,从而自匚编译所需要的文件和链接∏ 标程序。 的规贝 在讲述这个 之前,还是让我们先来粗略地看一看 的规则。 也就是一个目标文件,可以是 也可以是执行文件。 还可以是一个标签(),对于标签这种特性,在后续的“伪目标” 章节中会有叙述 就是,要生成那个所需要的文件或是口标 也就是需要执行的命令。(任意的命令) 这是一个文件的依赖关系,也就是说,这一个或多个的日标文 件依赖于 中的文件,其生成规则定义在 中。说 白一点就是说, 中如果有一个以上的文件比 文件要 新的话, 所定义的命令就会被执行。这就是 的规 则。也就是 中最核心的内容。 说到底, 的东西就是这样一点,好像我的这篇文档也该结東 了。呵呵。还不尽然,这是 的主线和核心,但要写好一个 还不够,我会以后面一点一点地结合我的工作经验给你慢慢 到来。內容还多着呢。:) 个示例 正如前面所说的,如果一个工程有个头文件,和个文件,我 们为了完成前面所述的那三个规则,我们的 应该是下面的这 个样子的。 反斜杠()是换行符的意思。这样比较便于 的易读。我们 可以把这个内容保存在文件为“ ”的文件中,然后 在该目录下直接输入命令“”就可以生成执行文件。如果要删 除执行文件和所有的中问目标文件,那么,只要简单地执行一下 ”就可以了。 在这个 屮,目标文件 )包含:执行文件和屮间 目标文件(),依赖文件( )就是冒号后面的那些文 件和文件。每一个文件都有一组依赖文件,而这些文件又 是执行文件的依赖文件。依赖关系的实质上就是说明了目标文 件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。 在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作 系统命令,一定要以一个键作为丌头。记住 并不管命令 是怎么工作的,他只管执行所定义的命令。 会比较 文件 和 文件的修改日期,如果 文件的日期要比 文件的日期要新,或者 不行在的话,那么, 就会执 行后续定义的命令。 这里要说明一点的是, 不是一个文件,它只不过是一个动作名 字,有点像语言中的样,其冒号后什么也没有,那么, 就不会自动去找文件的依赖性,也就不会自动执行其后所定义的命 令。要执行其后的命令,就要在命令后明显得指出这个 的名字。这样的方法非常有用,我们可以在一个 中定义不用 的编译或是和编译无关的命令,比如程序的打包,程序的备份,等等。 是如何工作的 在默认的方式下,也就是我们只输入命令。那么, 会在当前目录下找名字叫“ 或 ”的文件。 如果找到,它会找文件中的第一个日标文件 ),在上面的 例子中,他会找到“这个文件,并把这个文件作为最终的目标文 件 如果文件不存在,或是所依赖的后面的文件的文件 修改时间要比这个文件新,那么,他就会执行后面所定义的命令 来生成这个文件。 如果所依赖的文件也存在,那么会在当前文件中找 目标为文件的依赖性,如果找到则再根据那一个规则生成文件。 这有点像一个堆栈的过程) 当然,你的文件和文件是存在的啦,于是会生成文 件,然后再用文件生命 的终板任务,也就是执行文件 这就是整个的依赖性,会一层又一层地去找文件的依赖关 系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错 误,比如最后被依赖的文件找不到,那么就会直接退出,并报 错,而对于所定义的命令的错误,或是编译不成功, 根本不理。 只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后 面的文件还是不在,那么对不起,我就不工作啦。 通过上述分析,我们知道,像这种,没有被第一个目标文件直 接或间接关联,那么它后面所定义的命令将不会被自动执行,不过, 我们可以显示要执行。即命令—“ ”,以此来清除所 有的目标文件,以便重编译。 于是在我们编程中,如果这个工程已被编译过了,当我们修改了其中

...展开详情
试读 127P makefile教程(中文版).pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
jerryzhouyh 非常经典,入门很有用
2019-04-03
回复
上传资源赚积分or赚钱
最新推荐
makefile教程(中文版).pdf 43积分/C币 立即下载
1/127
makefile教程(中文版).pdf第1页
makefile教程(中文版).pdf第2页
makefile教程(中文版).pdf第3页
makefile教程(中文版).pdf第4页
makefile教程(中文版).pdf第5页
makefile教程(中文版).pdf第6页
makefile教程(中文版).pdf第7页
makefile教程(中文版).pdf第8页
makefile教程(中文版).pdf第9页
makefile教程(中文版).pdf第10页
makefile教程(中文版).pdf第11页
makefile教程(中文版).pdf第12页
makefile教程(中文版).pdf第13页
makefile教程(中文版).pdf第14页
makefile教程(中文版).pdf第15页
makefile教程(中文版).pdf第16页
makefile教程(中文版).pdf第17页
makefile教程(中文版).pdf第18页
makefile教程(中文版).pdf第19页
makefile教程(中文版).pdf第20页

试读结束, 可继续阅读

43积分/C币 立即下载 >