- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章:概述.doc
第一章:概述inux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Linux程序员。在Linux环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile文件的编写。此文件正是make正常工作的基础。所要完成的Makefile文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要得可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(多个)正确的Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。make是一个命令工具,它解释Makefile中的指令(应该说是规则),Makefile中描述了工程中所有文件的编译顺序、规则。Makefile有自己的书写格式、关键字、函数。像C语言有自己的格式、关键字和函数一样。而且在Makefile中可以使用shell所提供的任何命令来完成你想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE开发环境中都在使用,已经成为一种工程的编译方法。目前,系统完整的介绍make工具和如何编写Makefile的中文文档比较少。我整理这个文档就是希望能使众多的Linux环境下的程序员能够比较容易的掌握和学会使用它。本文所要介绍的是GNU的make,采用Red Hat FC3(包括最新发布的GNU Linux系统)所集成的GUN make工具。本文后续所用到的所有例子都采用C语言书写的源程序,因为它是目前最普遍使用的一种语言。当然make工具不仅仅是用来管理C语言工程的,那些编译器只要能够在shell下运行的语言所构建的工程都可以使用make工具来管理。而且也可以使用make工具来做一些其它的事。例如,有这样的需求:当我们修改了某个或者某些文件后,需要能够根据修改的文件来自动对相关文件进行重建或者更新。那么应该考虑使用GNU make工具。GNU make工具为我们实现这个目的提供了非常有利的支持。工程中根据源文件的修改情况来进行代码的编译正是使用了make的这个特征。make执行时,根据Makefile的规则检查文件的修改情况,决定是否执行定义的动作(那些修改过的文件将会被重新编译)。这是GNU make的执行依据。开始我们关于make的讨论之前,首先需要明确一些基本概念:编译:把高级语言书写的代码转换为机器可识别的机器指令。编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行。编译时,编译器检查高级语言的语法、函数与变量的声明是否正确。只有所有的语法正确、相关变量定义正确编译器就可以编译出中间目标文件。通常,一个高级语言的源文件都可对应一个目标文件。目标文件在Linux中默认后缀为“.o”(如“foo.c”的目标文件为“foo.o”)。为了和规则的目标文件相区别。本文将编译高级语言后生成的目标文件成为.o文件。链接:将多.o文件,或者.o文件和库文件链接成为可被操作系统执行的可执行程序。链接器不检查函数所在的源文件,只检查所有.o文件中的定义的符号。将.o文件中使用的函数和其它.o或者库文件中的相关符号进行合并,最后生成一个可执行的程序。“ld”是GNU的链接器。静态库:又称为文档文件(Archive File)。它是多个.o文件的集合。Linux中静态库文件的后缀为“.a”。静态库中的各个成员(.o文件)没有特殊的存在格式,仅仅是一个.o文件的集合。使用“ar”工具维护和管理静态库。共享库:也是多个.o文件的集合,但是这些.o文件时有编译器按照一种特殊的方式生成。对象模块的各个成员的地址(变量引用和函数调用)都是相对地址。因此在程序运行时,可动态加载库文件和执行共享的模块(多个程序可以共享使用库中的某一个模块)。参考 info ld了解更加详细的关于ld的说明和用法。第二章:GNU make 介绍make在执行时,需要一个命名为Makefile的文件。这个文件告诉make以何种方式编译源代码和链接程序。典型地,可执行文件可由一些.o文件按照一定的顺序生成或者更新。如果在你的工程中已经存在一个或者多个正确的Makefile。当对工程中的若干源文件修改以后,需要根据修改来更新可执行文件或者库文件,正如前面提到的你只需要在shell下执行“make”。make会自动根据修改情况完成源文件的对应.o文件的更新、库文
您可能关注的文档
最近下载
- 2009石油化工行业检修工程动工预算定额说明.docx
- YB∕T6294-2024 锌铝合金镀层弹簧钢丝(报批稿).pdf VIP
- TSGZ6001—2019特种设备作业人员考核规则正文.pdf VIP
- 新湘教版七年级数学上册全册导学案.pdf VIP
- 2025年内蒙古自治区呼和浩特市初一新生入学分班考试真题含答案.docx VIP
- 2025年西藏高考理综真题试卷及答案.docx VIP
- 部编人教版一年级数学上册全册教案.docx VIP
- 超市经营服务方案.docx VIP
- 腐蚀数据与选材手册-校对版.xls VIP
- 六年级下册语文试卷-《金色的鱼钩》一课一练(含答案)人教部编版.pdf VIP
文档评论(0)