加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 陈浩_makefile

陈浩_makefile.pdf

陈浩_makefile

linguiguang1983
2009-10-24 0人阅读 举报 0 0 暂无简介

简介:本文档为《陈浩_makefilepdf》,可适用于IT/计算机领域

跟我一起写Makefile作者:陈皓跟我一起写Makefile作者:陈皓整理:祝冬华第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓第一部分、概述第二部分、关于程序的编译和链接第三部分、Makefile介绍一、Makefile的规则二、一个示例三、make是如何工作的四、makefile中使用变量五、让make自动推导六、另类风格的makefile七、清空目标文件的规则第四部分、Makefile总述一、Makefile里有什么?、显式规则。、隐晦规则。、变量的定义。、文件指示。、注释。二、Makefile的文件名三、引用其它的Makefile四、环境变量MAKEFILES五、make的工作方式第五部分、书写规则一、规则举例二、规则的语法三、在规则中使用通配符四、文件搜寻五、伪目标六、多目标七、静态模式八、自动生成依赖性第六部分书写命令一、显示命令二、命令执行三、命令出错四、嵌套执行make五、定义命令包第七部分使用变量一、变量的基础二、变量中的变量三、变量高级用法四、追加变量值五、override指示符六、多行变量第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓七、环境变量八、目标变量九、模式变量第八部分使用条件判断一、示例二、语法第九部分使用函数一、函数的调用语法二、字符串处理函数、subst、patsubst、strip、findstring、filter、filterout、sort、word、wordlist、words、firstword、字符串函数实例三、文件名操作函数、dir、notdir、suffix、basename、addsuffix、addprefix、join四、foreach函数五、if函数六、call函数七、origin函数“undefined”“default”“file”“commandline”“override”“automatic”八、shell函数九、控制make的函数、error、warning第十部分make的运行第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓一、make的退出码二、指定Makefile三、指定目标“all”“clean”“install”“print”“tar”“dist”“TAGS”“check”和“test”四、检查规则五、make的参数第十一部分隐含规则一、使用隐含规则二、隐含规则一览、编译C程序的隐含规则、编译C程序的隐含规则、编译Pascal程序的隐含规则、编译FortranRatfor程序的隐含规则、预处理FortranRatfor程序的隐含规则、编译Modula程序的隐含规则、汇编和汇编预处理的隐含规则、链接Object文件的隐含规则、YaccC程序时的隐含规则、LexC程序时的隐含规则、LexRatfor程序时的隐含规则、从C程序、Yacc文件或Lex文件创建Lint库的隐含规则三、隐含规则使用的变量、关于命令的变量。、关于命令参数的变量四、隐含规则链五、定义模式规则、模式规则介绍、模式规则示例、自动化变量、模式的匹配、重载内建隐含规则六、老式风格的"后缀规则"七、隐含规则搜索算法第十二部分使用make更新函数库文件一、函数库文件的成员二、函数库成员的隐含规则三、函数库文件的后缀规则第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓四、注意事项第十三部分后序第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓第一部分、概述什么是makefile?或许很多Winodws的程序员都不知道这个东西因为那些Windows的IDE都为你做了这个工作但我觉得要作一个好的和professional的程序员makefile还是要懂。这就好像现在有这么多的HTML的编辑器但如果你想成为一个专业人士你还是要了解HTML的标识的含义。特别在Unix下的软件编译你就不能不自己写makefile了会不会写makefile从一个侧面说明了一个人是否具备完成大型工程的能力。因为makefile关系到了整个工程的编译规则。一个工程中的源文件不计数其按类型、功能、模块分别放在若干个目录中makefile定义了一系列的规则来指定哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至于进行更复杂的功能操作因为makefile就像一个Shell脚本一样其中也可以执行操作系统的命令。makefile带来的好处就是“自动化编译”一旦写好只需要一个make命令整个工程完全自动编译极大的提高了软件开发的效率。make是一个命令工具是一个解释makefile中指令的命令工具一般来说大多数的IDE都有这个命令比如:Delphi的makeVisualC的nmakeLinux下GNU的make。可见makefile都成为了一种在工程方面的编译方法。现在讲述如何写makefile的文章比较少这是我想写这篇文章的原因。当然不同产商的make各不相同也有不同的语法但其本质都是在“文件依赖性”上做文章这里我仅对GNU的make进行讲述我的环境是RedHatLinuxmake的版本是。必竟这个make是应用最为广泛的也是用得最多的。而且其还是最遵循于IEEE标准的(POSIX)。在这篇文档中将以CC的源码作为我们基础所以必然涉及一些关于CC的编译的知识相关于这方面的内容还请各位查看相关的编译器的文档。这里所默认的编译器是UNIX下的GCC和CC。第二部分、关于程序的编译和链接在此我想多说关于程序编译的一些规范和方法一般来说无论是C、C、还是pas首先要把源文件编译成中间代码文件在Windows下也就是obj文件UNIX下是o文件即ObjectFile这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件这个动作叫作链接(link)。编译时编译器需要的是语法的正确函数与变量的声明的正确。对于后者通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明而定义应该放在CC文件中)只要所有的语法正确编译器就可以编译出中间目标文件。一般来说每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件)。链接时主要是链接函数和全局变量所以我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。链接器并不管函数所在的源文件只管函数的中间目标文件(ObjectFile)在大多数时候由于源文件太多编译生成的中间目标文件太多而在链第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓接时需要明显地指出中间目标文件名这对于编译很不方便所以我们要给中间目标文件打个包在Windows下这种包叫“库文件”(LibraryFile)也就是lib文件在UNIX下是ArchiveFile也就是a文件。总结一下源文件首先会生成中间目标文件再由中间目标文件生成执行文件。在编译时编译器只检测程序语法和函数、变量是否被声明。如果函数未被声明编译器会给出一个警告但可以生成ObjectFile。而在链接程序时链接器会在所有的ObjectFile中找寻函数的实现如果找不到那到就会报链接错误码(LinkerError)在VC下这种错误一般是:Link错误意思说是说链接器未能找到函数的实现。你需要指定函数的ObjectFile好言归正传GNU的make有许多的内容闲言少叙还是让我们开始吧。第三部分、Makefile介绍make命令执行时需要一个Makefile文件以告诉make命令需要怎么样的去编译和链接程序。首先我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册在这个示例中我们的工程有个C文件和个头文件我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:)如果这个工程没有编译过那么我们的所有C文件都要编译并被链接。)如果这个工程的某几个C文件被修改那么我们只编译被修改的C文件并链接目标程。)如果这个工程的头文件被改变了那么我们需要编译引用了这几个头文件的C文件并链接目标程序。只要我们的Makefile写得够好所有的这一切我们只用一个make命令就可以完成make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译从而自己编译所需要的文件和链接目标程序。一、Makefile的规则在讲述这个Makefile之前还是让我们先来粗略地看一看Makefile的规则。target:prerequisitescommand第页共页年月日整理:祝冬华跟我一起写Makefile作者:陈皓target也就是一个目标文件可以是ObjectFile也可以是执行文件。还可以是一个标签(Label)对于标签这种特性在后续的“伪目标”章节中会有叙述。prerequisites就是要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令)这是一个文件的依赖关系也就是说target这一个或多个的目标文件依赖于prerequisites中的文件其生成规则定义在command中。说白一点就是说prerequisites中如果有一个以上的文件比target文件要新的话command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。说到底Makefile的东西就是这样一点好像

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/15

陈浩_makefile

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利