资料下载网
首页 计算机 考试教辅
GNU makefile中文手册 pdf电子书免费下载,百度云
首页 > 计算机 > 计算机F > GNU makefile中文手册 pdf电子书免费下载,百度云

《GNU makefile中文手册》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/13Qqs0Ucu8wgvHNt0dc02tQ
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/af_123828_pd_GNUmakefileZWSC.zip

 


GNU makefile中文手册

作者:empty

页数:199

出版社:empty

《GNU makefile中文手册》介绍

本文瑾献给所有热爱Linux的程序员!本中文文档版权所有,本文比较完整的讲述GNUmake工具, 涵盖GNUmake的用法、语法.同时重点由于个人水平限制,本文在一些地方存在描述不准确之处.恳请大家在阅读过程中,阅读本书之前, 读者应该对GNU的工具链和Linux的一些常用编程工具有一定的阅读本文的几点建议:者,可只阅读本文各章节前半部分的内容(作为各章节的基础知识).和之前版本不兼容之处;也可以作为开发过程过程的参考手册.的专业程序员,那么建议:完整学习本文的各个章节,包括了基础知识和高级用法、技巧, 它会为你在Linux下的工程开发、工程管理提供非常有用的帮助,页http:/xhbdahai.cublog.cn上获取!!讨论如何为一个工程编写Makefile, 作为一个Linux程序员, make工具的使用以及编写Make fle是必需的.系统、详细讲述make的中文资料比较少, 出于对广大中文Linux er的支持、本人在工作之余, 花了18个多月时间完成对“info make”的翻译整理、完成这个中文版手册, 本书不是一个纯粹的语言翻译版本, 其中对GNUmake的一些语法和用法根据我个人的工作经验进行了一些详细分析和说明,也加入了一些个人的观点和实践总结, 本书的所有的例子都可以在支持V 3.8版本的GNUmake的系统中正确执行,提出您宝贵的意见,也是对我个人的帮助、我的个人电子邮箱地址:xhbdahai@126.com.非常愿意和大家交流!共同学习了解, 诸如:gcc、as、ar.ld、yacc等; 同时在书写Make fle时, 需要能够进行一些基本的shell编程, 这些工具是维护一个工程的基础.如果大家对这些工具的用法不是很熟悉,可参考项目资料,1.如果之前你对GNUmake没有了解、当前也不想深入的学习GNUmake的读2.如果你已经对GNUmake比较熟悉, 你更需要关心此版本的新增特点、功能、3.之前你对GNUmake没有概念、或者刚开始接触, 本身又想成为一个Linux下4.此中文文档当前版本v1.5,本文的所有勘误和最新版本可在主谢谢!

第一章:概述Linux环境下的程序员如果不会使用GNUmake来构建和管理自己的工程, 应该不能算是一个合格的专业程序员, 至少不能称得上是Unix程序员, 在Linux(unix) 环境下使用GNU的make工具能够比较容易的构建一个属于你自己的工程, 整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行.不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写, 此文件正是make正常工作的基础,所要完成的Makefile文件描述了整个工程的编译、连接等规则, 其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件.尽管看起来可能是很复杂的事情,但是为工程编写Makefile的好处是能够使用一行命令来完成“自动化编译 , 一旦提供一个(通常对于一个工程来说会是多个) 正确的Make fle.编译整个工程你所要做的唯一的一件事就是在shell提示符下输入make命令, 整个工程完全自动编译, 极大提高了效率,make是一个命令工具, 它解释Make ile中的指令(应该说是规则) , 在Make fle文件中描述了整个工程所有文件的编译顺序、编译规则, Make ile有自己的书写格式、关键字, 函数, 像C语言有自己的格式、关键字和函数一样。而且在Makefile中可以使用系统shell所提供的任何命令来完成想要的工作.Make fle(在其它的系统上可能是另外的文件名) 在绝大多数的IDE开发环境中都在使用, 已经成为一种工程的编译方法.理这个文档就是希望能使众多的Linux环境下的程序员能够比较容易的掌握和学会使目前, 系统完整的介绍make工具和如何编写Makefile的中文文档比较少, 我整用GNUmake.本文所要介绍的是GNU的make, 采用RedHat FC 3(包括最新发布的GNULinux系统) 所集成的GUN make工具,在开始我们关于make的讨论之前, 首先需要明确一些基本概念:编译:把高级语言书写的代码转换为机器可识别的机器指令.编译高级语言后生成为了和规则的目标文件相区别。本文特编译高级语言后生成的目标文件成为.o文链接:将多.o文件,或者.o文件和库文件链接成为可被操作系统执行的可执行程本文中所有示例均采用C语言的源程序,因为它是目前最普遍使用的一种语言,当然make工具不仅仅是用来管理C语言工程的, 那些编译器只要能够在shell下运行的语言所构建的工程都可以使用make工具来管理。Make工作不仅仅可以用来编译源代码,它也可以完成一些其它的功能.例如,有这样的需求:当我们修改了某个或者某2004年9月117GNUmake中文手册些文件后,需要能够根据修改的文件来自动对相关文件进行重建或者更新.那么应该考虑使用GNUmake工具.GNUmake工具为我们实现这个目的提供了非常有利的支持.工程中根据源文件的修改情况来进行代码的编译正是使用了make的这个特征, make执行时, 根据Make fle的规则检查文件的修改情况, 决定是否执行定义的动作(那些修改过的文件将会被重新编译) .这是GNUmake的执行依据。1.2准备知识的指令虽然可被机器识别,但是还不能被执行,编译时,编译器检查高级语言的语法、函数与变量的声明是否正确,只有所有的语法正确、相关变量定义正确编译器就可以编译出中间目标文件,通常,一个高级语言的源文件都可对应一个目标文件.目标文件在Linux中默认后级为“.o”(如“foo.c”的目标文件为“foo.o”) 。件.序(Linux环境下, 可执行文件的格式为“ELF”格式) , 链接器不检查函数所在的源文件,只检查所有.o文件中的定义的符号。将.o文件中使用的函数和其它.o或者库文件中的相关符号进行合并,对所有文件中的符号进行重新安排(重定位),并链接系统相关文件(程序启动文件等) 最终生成可执行程序, 链接过程使用GNU的“ld”工具,静态库:又称为文档文件(Archive File) .它是多个.o文件的集合, Linux中静态库文件的后缀为“.a”.静态库中的各个成员(.o文件)没有特殊的存在格式,仅仅是一个.o文件的集合,使用“ar”工具维护和管理静态库。共享库:也是多个.0文件的集合,但是这些.o文件时有编译器按照一种特殊的方式生成(Linux中, 共享库文件格式通常为“ELF”格式, 共享库已经具备了可执行条件).模块中各个成员的地址(变量引用和画数调用)都是相对地址,使用此共享库的程序在运行时,共享库被动态加载到内存并和主程序在内存中进行连接.多个可执行程序可共享库文件的代码段(多个程序可以共享的使用库中的某一个模块,共享代码,不共享数据) .另外共享库的成员对象可被执行(由libd.so提供支持) .2004年9月11日8参考in fold了解更加详细的关于Id的说明和用法。

第二章GNUmake介绍make在执行时, 需要一个命名为Makefile的文件.这个文件告诉make以何种方式编译源代码和链接程序,典型地,可执行文件可由一些.o文件按照一定的顺序生成或者更新, 如果在你的工程中已经存在一个活着多个正确的Makefile.当对工程中的若干源文件修改以后,需要根据修改来更新可执行文件或者库文件,正如前面提到的你只需要在shell下执行“make , make会自动根据修改情况完成源文件的对应.o文件的更新、库文件的更新、最终的可执行程序的更新.make通过比较对应文件(规则的目标和依赖, ) 的最后修改时间, 来决定哪些文件需要更新、那些文件不需要更新, 对需要更新的文件make就执行数据库中所记录的相应命令(在make读取Make fle以后会建立一个编译过程的描述数据库, 此数据库中记录了所有各个文件之间的相互关系,以及它们的关系描述)来重建它,对于不需要重建的文件make什么也不做.Before repo ring a bug or trying to fixit yourself, try to isolate it to the smallest possible好了,开始我们的神奇之旅吧!而且可以通过make的命令行选项来指定需要重新编译的文件。可参考9.2指定终极目标一节Problems and BugsIf you have problems with GNU'make'or think you've found a bug.please report it to thedevelopers; we can not promise to do anything but we might well want to fixit.Before reporting a bug.make sure you've actually found a real bug.Carefully reread thedocumentation and see if it really says you can do what you'retrying to do.if its not clearwhether you should be able to do something or not, report that too; its a bug in thedocumentation!makefile that reproduces the problem.Then send us the makefile and the exact results'make'gave you, including any error or wa ming messages.Pleased on't paraphrase these messages:it's best to cut and paste them into your report.When generating this small makefile, be sure tonotuseanynon-freeorunusualtoolsinyourcommands:youcanalmostalwaysemulatewhatsuch a tool would do with simple shell commands.Finally, be sure to explain what youexpected to occur, this will help us decide whether the problem was really in the documentation.Once you have a precise problem you can report it in one of two ways.Either send electronicmailto:or use our Web-based project management tool, at:2004年9月11月9GNUmake中文手册In addition to the information above, please be careful to include the version number of'make'you are using.You can get this information with the command'make--version'.Besure also to include the type of machine and operatingsystem you are using.One way toobtain this information is by looking at the final lines of output from the commandmake--help'以上时GNUmake的bug反馈方式.如果在你使用GNUmake过程中.发现bug或者问题,可以通过以上的方式和渠道反馈,2.1 Makefile简介在执行make之前, 需要一个命名为Makefile的特殊文件(本文的后续将使用Make ile作为这个特殊文件的文件名) 来告诉make需要做什么(完成什么任务) , 该怎么做, 通常, make工具主要被用来进行工程编译和程序链接、bug-make@gnu.orghttp:/savannah.gnu.org/projects/make/本节将分析一个简单的Make fle, 它对一个包含8个C的源代码和三个头文件的工程进行编译和链接, 这个Makefile提供给了make必要的信息, make程序根据Make fle中的规则描述执行相关的命令来完成指定的任务(如:编译、链接和清除编译过程文件等) , 复杂的Makefile我们将会在本文后续进行讨论。新编译):当使用make工具进行编译时, 工程中以下几种文件在执行make时将会被编译(重1.所有的源文件没有被编译过,则对各个C源文件进行编译并进行链接,生成最后的可执行程序;2.每一个在上次执行make之后修改过的C源代码文件在本次执行make时将会被重新编译;3.头文件在上一次执行make之后被修改, 则所有包含此头文件的C源文件在本次执行make时将会被重新编译,后两种情况是make只将修改过的C源文件重新编译生成.0文件, 对于没有修改的文件不进行任何工作,重新编译过程中,任何一个源文件的修改将产生新的对应的.o文件,新的.o文件将和以前的已经存在、此次没有重新编译的.o文件重新连接生成最后的可执行程序,


《GNU makefile中文手册》目录

第一章:概述.

1.1概述.

1.2准备知识.

第二章GNUmake介绍.

GNUmake介绍.

2.1Makefile简介.

2.2Makefile规则介绍.

2.3简单的示例.

2.4make如何工作.

2.5指定变量.

2.6自动推导规则.

2.7另类风格的makefile.

2.8清除工作日录过程文件.

第三章:Makefile总述.

Makefile.总述.

3.1Makefile的内容.

3.2makefile文件的命名.

3.3包含其它makefile文件.

3.4变量MAKEFILES.

3.5变量MAKEFILE_LIST.

其他特殊变量.

makefile文件的重建.

重载另外一个make fle.

make如何解析makefile文件.

3.9.2条件语句.

3.9.3规则的定义.

3.10总结.

第四章:Makefile的规则.

Makefile规则.

4.1一个例子.

4.2规则语法.

4.3依赖的类型.

4.4文件名使用通配符.

4.4.1统配符使用举例.

4.4.2通配符存在的缺陷.

4.4.3函数wildcard.

4.5日录搜子.

4.5.1一般搜索(变量VPATH) .

选择性搜索(关键字vpath) .

日录搜索的机制.

命令行和搜索目录.

隐含规则和搜索目录.

库文件和搜索日录.

强制日标(没有命令或依赖的规则).

空日标文件.

Makefile的特殊目标.

多目标.

多规则目标.

静态模式.

4.12.1静态模式规则的语法.

4.12.2静态模式和隐含规则.

4.13双冒号规则.

4.14自动产生依赖.

第五章:规则的命令.

为规则书写命令.

5.1命令回显.

5.2命今的执行.

5.3并发执行命令.

5.4命令执行的错误.

5.5中断make的执行.

5.6make的递归执行.

5.6.1变量MAKE.

5.6.2变量和递归.

5.6.3命令行选项和递归.

5.6.4-w选项.

5.7定义命令包.

5.8空命令.

第六章:Makefile中的变量.

使用雯量.

6.1变量的引用.

6.2两种变量定义(赋值).

6.2.1逆归展开式变量.

6.2.2直接展开式变量.

6.2.3定义一个空格.

6.2.4“?=”操作符.

6.

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5