文件名称:
GNU make v3.80完整版中文指南
开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2019-03-16
详细说明:GNU make中文手册 ver - 3.8 译者:徐海兵。本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一个工程编写Makefile。作为一个Linux程序员,make工具的使用以及编写Makefile是必需的。Linux
中文手册
斥文件和搜索目录
伪目标
强制目标(没有命令或依赖的规则)
空目标文件
的特殊目标
多目标
多规则日标
静态模式
静态模式规则的语法
静态模式和隐含规
双冒号规则
自动产生依赖
第四章:规则的命令
规则中书写命令
命令回显
命令的执行
并发执行命令
命令执行的错误
中断的执行
的递归执行
变量和递归
命令行选项和递归
选项
定义命令包
空命令
第五章
中的变量
使用变量
变量的引用
两种变量定义(赋值)
递归展开式变量
直接展开式变量
如何定义个空格
”操作符
变量的高级用法
变量的替换引用
变量的套嵌引用
变量取值
如何设置变量
追加变量值
指示符
多行定义
系统环境变量
目标指定变量
模式指定变量
第六章
的条件执行
的条件判断
个例子
条件为新的基本语法
年月日
Linux
中文手册
标记测试的条件语句
第七章
的内嵌函数
的函数
函数的调用语法
文本处理函数
文件名处理函数
函数
函数
函数
函数
函数
函数
函数
的控制函数
第八章:执行
执行
指定
文件
指定终极目标
替代命令的执行
防止特定文件重建
替换变量定义
使用进行编译测试
的命令行选项
第九章:
的隐含规则
使用隐含规则
隐含规则的使用
的隐含规则一览
隐含变量
代表命令的变量
命令参数的变量
隐含规则链
年月日
Linux
中文手册
模式规贝
模式规则介绍
模式规则示例
自动化变量
模式的匹配
万用规则
重建内嵌隐含规则
缺省规则」
后缀规贝
隐含规则搜索算法
第十章:使用更新静态库文件
更新静态库文件
库成员作为目标
静态库的更新
更新静态库的符号索引表
静态库的注意事项
静态库的后缀规则
第十一章:
的特点
的一些特点
源自
的特点
源自其他版本的特点
自身的特点
第十二章和其它版本的兼容
不兼容性
第十三章
的约定
书写约定
基本的约定
规则命令行的约定
代表命令变量
安装目录变量
的标准目标名
安装命令分类
第|四章
的常见错淏信息
产生的错误信息
附录:关键字索引
可识别的指示符
数
的自动化变量
环境变量
后序
年月日
Linux
中文手册
关于本书
木文瑾献给所有热爱
的程序员!木文档版权所有,禁止用于任何商业行为。
本文比较完整的讲述
工具,涵盖
的用法、语法。同时重点讨论如何
为一个工程编写
作为
程序员
工具的使用以及编写
是必需
的。系统、详细讲述
的中文资料比较少,出于对广人中文
的支持,本人在工作之余,
花了个多月时间完成对“
的翻译整理,完成这个中文版的书册。本书并不是一个
语言的翻译版本,其中对
的一些语法和用法根据我个人的工作经验进行了一些详细分
析和说明,也加入了一些个人的观点和实践总结。本的所有的例子都可以在支持版本的
的系统中正确执行
由于个人水平限制,本文在一些地方存在措述不准确之处。恳请大家在阅读过程中,提出您宝
贵的意见,也是对我个人的帮助。我的个人电子邮箱地址:
非常愿意和大
家交流!共同学习。
阅读木书之前,应该对的工具链和
中的一些常用工具有所了解。诸如:
等。在书写
时,需要能够理解一些脚木程序。这些工具是维护一个
工程的基础工只。如果对这些工只的使用不是很熟悉,可参考相关资料。
阅读本文的几点建议:
如果之前你对
没有了解、而当前也不想深入的学习
的读者。你只
需要阋读本文各章前半部分的基础知识
如果你已经对
比较熟悉,可能你更需要关心此版本的一些特点、新增的功能
和存在的不兼容。
之前你对
没有多少概念、或者刚开始接触,本身又想成为一个
下的专
业程序员,那么建议:完整学习本文的各个章节,包括了基础知识和高级用法、技巧。它
会为你以后在下的工程开发、工程管理提供非常有用的榘助
谢谢!
徐海兵
年月日
Linux
中文手册
第一章:概述
之前基本知识
概述
环境下的程序员如果不会使用
来构建和管理自己的工程,应该不能算是一
个合格的专业程序员,至少不能称得上是
程序员。在
环境下使用
的
工
具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以亢成编译、
连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为
文件
的编写。此文件止是
正常工作的基础。
所要完成的
文件描述了整个L程的编译、连接等规则。其中包括:工程中的哪些源
文件需要编译以及如何编译、需要创建那些斥文件以及如何创建这些库文件、如何最后产生我们想
要得可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写
的好处是能够使用
行命令来完成“自动化编译”,一旦提供一个(多个)正确的
。编详整个工程你所要做
的唯一的一件事就是在提小符下输入
命令整个工程完全自动编译,极大提高了效率。
是一个命令工具,它解释
中的指令(应该说是规则)
中描述了工
稈中所有文件的编译顺序、规则。
有自己的书写格式、关键字、函数。像语言有自己
的格式、关键字和函数一样。而且在
中可以使用所听提供的仟何命令来完成你想要的
工作
(在其它的系统上可能是另外的文件名)在绝大多数的开发环境中都在使用,
已经成为一种工程的编译方法
目前,系统完整的介绍
工具和如何编写
的中文文档比较少。我整理这个文档
貮是希望能使众多的环境下的程序员能够比较容易的掌握和学会使用它。本文所要介绍的是
的
,采用
(包括最新发布的
系统)所集成的
工具。
版本信息如下:
本文后续所用到的所有例子都采用语言书写的源程序,因为它是目前最普遍使用的一种语
然
工具不仅仅是用来管语言工程的,那些编译器只要能够在
卜运行的语言所构
建的工程都可以使用
工只来管理。而且也可以使用
工只来做一些其它的事。例如,
有这样的需求:当我们修改了某个或者某些文件后,需要能够根据修改的文件来自动对相关文件进
行重建或者更新。那么应该考虑使用
工具。
工只为我们实现这个目的提
供了非常有利的支持。工程中根据源文件的修改情况来进行代码的编译正是使用了
的这个特
执行时,根据
的规则检査文件的修改情况,决定是否执行定义的动作(那些
修改过的文件将会被重新编译)。这是
的执行依据
年月日
Linux
中文手册
准备知识
在开始我们关于
的讨论之前,首先需要明确一些基本概念:
编译:把高级语言书写的代码转换为机器可识别的机器指令。编译高级语言后生成的指令虽然
可被机器识别,但是还不能被执行。编译时,编译器检查高级语言的语法、函数与变量的声眀是否
正确。只有所有的语法正确、相关变量定乂正确编译器就可以编译岀中间目标文件。通常,一个高
级语言的源文件都可对应个目标文件。目标文件在
中默认后缀为“”(如“
的目
标文件为“
为了和规则的目标文件相区别。木文将编译高级语言后生成的目标文件成为文件。
链接:将多文件,或者文件和库文件链接成为可被操作系统执行的可执行程序。链接器不
检查函数所在的源文件,只检查所有文件中的定义的符号。将文件中使用的涵数和其它或
者库文件中的相关符号进行合并,最后生成一个可执行的程序。“”是的链接器
静态库:又称为文档文件(
)。它是多个文件的集合。
中静态库文件的后
缀为“”。静态库中的各个成员(文件)没有特殊的存在格式,仅仅是一个文件的集合。使
用
工具维护和管理静态库,
共享库:也是多个文件的集合,但是这些文件时有编译器按照一和特殊的方式生成。对象
模块的各个成员的地址(变量引用和函数调用)都是相对地址。因此在程序运行时,可动态加载库
文件和执行共享的模块(多个程序可以共享使用库中的某一个模块)。
参考
了解更加详细的关于的说明和用法。
介绍
在执行时,需要一个命名为
的文件。这个文件告诉
以何种方式编译源
代码和链接程序。典型地,可执行文件可由一些文件按照一定的顺序生成或者更新。如果在你的
工程中已经存在一个或者多个正确的
。当对工稈中的若干源文件修改以后,需要根据修改
来更新可执行文什或者库文什,正如前面提到的你只需要在下执行“
会自动
根据修改情况完成源文件的对应文件的更新、库文件的更新、最终的可执行程序的更新。
通过比较对应文件(规则的目标和依赖,)的最后修改时间,来决定哪些文件需要更新、
那些文件不需要更新。对需要更新的文件
就执行数据库中所记录的相应命令(在
取
以后会建立个编译过程的描述数据斥。此数据库中记录了所有各个文件之间的相互
关系,以及它们的关系描述)来重建它,对」不需要重建的文件什么也不做。
血且可以通过的命令行选项来指定需要重新编译的文件。参考指定终极目标节
年月日
Linux
中文手册
以上时
的反馈方式。如果在你使用
过程中。发现或者问
题。可以通过以上的方式和渠道反馈。
好了。开始我们的神奇之旅吧!
简介
在执行
之前,需要一个命名为
的特殊文件(木文的后续将使用
作
为这个特殊文件的文件名)来告诉需要做什么(完成什么任务),该怎么做。通常
工只主要被用来进行工程编译和程序链接。
本节将分析一个简单的
,它对一个包含个的源代码和三个头文件的工程进行编
译和链接。这个
提供给了
必要的信息,
程序根据
中的规则措述
执行相关的命令来完成指定的仟务(如:编译、链接和清除编译过程文件等)。复的
我
们将会在本文后续进行讨论
当使用工只进行编译时,工程中以下几种文件在执行时将会被编译(重新编译)
所有的源文件没有被编译过,则对各个源文件进行编译并进行链接,生成最后的可执行
程序
每一个在上次执行
之后修改过的源代码文件在本次执行
时将会被重新编
译
年月日
Linux
中文手册
头文件在上一次执行
之后被修改。则所有包含此头文件的源文件在本次执行
时将会被重新编译
后两种情况是
只将修改过的源文件重新编译生成文件,对于没有修改的文件不进
行任何工作。重新编译过程中,任何一个源文件的修改将产生新的对应的文件,新的文件将和
以前的己经存在、此次没有重新编译的文件重新连接生成最后的可执行程序。
首先让我们先来看
相关的基本知识。
规则介绍
个简单的
描述规则组成:
规则的目标。通常是程序中间或者最后需要生成的文件名。可以是文件、也可以是
最后的叫执行程序的文件名。另外,目标也可以是一个执行的动作的名称,如目标“
成这样的目标是“伪目标”。参考
伪目标一节
规则的依赖。生成规则目标所需要的文件名列表。通常一个目标依赖」一个
或者多个文件
:规则的命令行。是
程序所有执行的动作(任意的命令或者可在
下执行的程序)。
个规则可以有多个命令行,每一条命令占一行。注意:每一个命令行必须以字符开始,
字符告诉
此行是一个命令行。
按照命令完成相应的动作。这也是书写
中容易产生,而且比较隐蔽的错误。
命令就是在任何一个目标的依赖文件发生变化后重建目标的动作描述。一个目标可以没有依赖
而只有动作(指定的命令)。比如
中的目标“”,此目标没有依赖,只有命令。它所
指定的命令用来删除
过程产生的中间文件(清理工作)。
在
中“规则”就是描述在什么情況下、如何重健规则的目标文件,通常规则中包括
了目标的依赖关系(目标的依赖文件)和重健目标的命令。
执行重建目标的命令,来创建或
者重建规则的目标(此目标文件也可以是触发这个规则的上一个规则中的依赖文件)。规则包含了
目标和依赖的关系以及更新目标所要求的命令。
中可以包含除规则以外的部分。一个最简单的
可能只包含规则描述。规则
在有些
中可能看起来非常复杂,但是无论规则的书写是多么的复杂,它都符合规则的基
本格式
年月日
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.