没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
目录
1 介绍
2 历史
3 如何运行 configure 和 make
4 Makefile 介绍
5 一个最小的 GNU Autotools 项目
6 写 configure.in
7 GNU Automake 介绍
8 启动
9 一个小型 GNU Autotools 项目
10 GNU Libtool 介绍
11 使用 GNU Libtooll 和 configure.in,Makefile.am
12 一个大型的 GNU Autotools 项目
13 分发软件包
14 安装和卸载被配置的包
15 编写和 GNU Autotools 可移植的 C
16 编写和 GNU Autotools 可移植的 C++
17 动态加载
18 使用 GNU libltdl
19 高级 GNU Automake 用法
20 一个复杂的 GNU Autotools 项目
21 M4
22 编写可移植的 Bourne Shell
23 编写 Autoconf 的新宏
24 移植现有的库到 GNU Autotools
25 在 Cygnus Cygwin 中使用 Autotools
26 和 GNU Autotools 交叉编译
A 安装 GNU Autotools
B 平台
C 生成文件依赖关系
D Autoconf 宏参考
E OPL
索引
这是 第一次转载别人的文章,只因今天在网上找 的中文版,竟
找不到,且发现很多人和我遇到同样的问题。于是决定将此书翻译,以满足广
大 初学者学习 的愿望。已有人将前几章译过,在此发扬不重
复劳动精神借用之,不久就会将 完整翻译。因本人水平有限,难免
有出错之处,还望各位不吝赐教,若有能力者强烈建议读原文,在此下载。
1
本篇为转载内容,原作者文章请看这里 ——–
简介
、和 这三个软件包可以让你的软件具有更好的
可移植性并简化其构建的过程──尤其是在其他人的系统上。软件的可移植性
和高效的构建系统是现代软件工程实践中非常重要的方面。现在,人们通常都
希望软件能在不止一个平台上运行,因为硬件的限制有可能会改变对平台的选
择,新的客户可能在使用不同的系统,而你所使用的操作系统提供商也可能在
新版本中引入与之前不兼容的变化。此外,能够让软件构建过程更简单且不容
易出错的工作也是非常有价值的。
这个工具可以在编译软件包前执行一系列测试,发现系统的特性,
而你的源码可以去适应不同系统的差别。通过这种方式,可以让你的软件包具
有更好的可移植性。
是产生’描述要构建什么──的工具,它遵从了很多的
标准。极大地简化了描述软件包结构及追踪源码间依赖关系的过程。
是编译器和连接器的命令行接口,利用它可以方便地产生具有可移植
性的静态库和动态链接库。
本书涉及什么
本书是关于 、和 的教程,以下将它们简称为
。 手册分别对这三种工具进行详细的阐述,但迄今为止,
还没有哪本指南描述过它们如何共同工作的。
近年来,这些工具得到了发展,对相关问题很了解的贡献者们做出了相应的设
计,但是描述原理的文件却几乎没有。在阅读例子时,可能有人会问为什么
的宏使用以下的 结构:
!"!#
$%&'(
而不是更简单的
) !"!*#
$%&'(
诸如此类问题的答案都记录在了本书中。
本书不涉及什么
2
本书不是一本 、或 的权威参考,否则书中将充
斥过时的信息。譬如本书并不对由 提供的每一个预先定义的宏进行
描述。相反,本书将帮助你理解你所遇到的任何宏,并影响你处理软件可移植
性和软件包创建的方式。以上工具的 手册可以作为参考书。
本书对相关概念只作简单介绍而不是详细地解释它们。本书会介绍如何编
写’和 +!脚本,但是你必须参考其他工具书以便熟悉这些
主题。
本书为谁而作
软件开发者,系统管理员和技术管理员很可能对关于 的书感
兴趣。
软件开发者,特别是自由项目的开发者会认为了解如何使用这些工具是十分有
价值的,因为 在自由软件社区中正变得越来越流行。室内项
目的开发者如用这些工具也会受益非浅。
系统管理者能从这些工具的使用知识中受益。因为系统管理员的通常任务就是
编译和安装使用 框架的软件包。偶尔,特性测试也会产生错
误的结果而导致编译错误或程序异常。通常稍微 ,一下就可以编译软件
包了,但是知道解决问题的正确方法能够帮助软件包的维护者。
最后,书中的讨论将使技术管理员对软件可移植性的复杂本质和创建大型项目
的过程有进一步的了解。
本书是如何组织的
与任何一本好的教程一样,本书首先解释简单的概念,然后在这些基础知识上
再进一步延伸至高层次的主题。
本书的第一部分将阐述这些工具的发展及其存在的原因。
第二部分则是本书的主要内容。首先解释’和 ,!!-
之类的概念。此后的章节将逐一介绍各个工具及如何使用它们来处理不同规模
的项目。如果用 . 和 .//语言编写的程序十分粗糙的话,该程序将不可移植。
第 %0和 %(章将分别指导如何用 .和 .//语言编写可移植程序。
第三部分提供的信息是你在其他任何参考书中都没法找到的。因为该部分是根
据大量应用这些工具的实际经验编写而成的。其中有章节是关于一些高级但又
十分重要的概念,如 0 宏处理器及如何写可移植 +!的脚本。第
12章将概述如何把一个现存的软件包移植到 框架。许多开发
者会对该章内容十分感兴趣,因为在交叉编译环境中使用 创
建软件包是最令人困惑的。第 1(章将就此作出解释。
历史
3
本章我们就书中工具的发展历史进行简要阐述。你不必为了使用这些工具而去
了解历史,但是了解这些工具的发展过程将有助于了解为何它们以目前的方式
运作。此外,在这样一本书中,我们有必要感谢原创作者及其灵感来源,并对
他们所做的贡献作一番解释。
的多样性
在数种所讨论的程序中,最早开发出来的是 。它的发展是由
操作系统的历史决定的。
贝尔实验室的 34和 56-于 %787编写了最早版本
的 。在上世纪七十年代,尽管贝尔实验室并不被允许商业化地出售
,但是它确实以较低的价格将 卖给了一些大学。加州大学伯克利分
校在原 的源码上做了改进,并形成了 +93版的 。
上世纪八十年代早期,6'6签定允许他们商业化地出售 的协议,
的第一个 6'6版本是 9$:::。
八十年代随着 越来越流行,其他一些公司对原有的 进行修改而形
成了他们自己的版本。例如,9!$的 9;9、3,
<=-.!-!的 !以及 >?@!A的 >@。
尽管 的各个版本在本质上是相似的,各版本之间还是有区别的。它们的
头文件集和系统库所提供的函数还是有些细微的差别,而在中断处理和作业控
制等方面存在的差别则更大。
然而 @;9:的出现则消除了其中的一些差别。但是 @;9:在一些领域中又引
入了新的特性,从而导致了更多的版本。同样,不同系统采用不同时期的
@;9:标准,也导致了更多的差异。
所有这些差异给作为源代码散布的程序带来了问题。即便是像 -$这样
简单的函数也不是任何系统都提供的;+93系统库提供与之类似的功能
-$,但是参数的次序是相反的。
要想使程序在不同版本的 都能运行,程序的作者若就必须熟悉各版本之
间的具体差别。他们还需要注意这些差别在各版本中是如何体现的,因为它们
虽然都遵循 @;9:标准,但是各自又引入了新的各不相同的特性。
虽然通常情况下可以用 BA来确认特定的系统和版本,但是人们越来越难
以知道哪个版本具有哪些特性。因此,人们需要更系统的方法来处理不同版本
间的差异。
第一个配置程序
到 %771为止,人们已经开发了四个系统来帮助实现源代码的移植:
,-!,!,作者是 !!$C、>!9和
4-!A。
4
.$,,!脚本,作者是 5D4!A@$,以及原由的
..,!脚本,作者是 4!A9。两者十分相似,且
其开发者经常交流。..是 .-!.E也就是以前的
.编译器。
软件包,作者是 3 A5F。
:,CA?系统的一部分
以上系统都将构建程序分成两步:配置和构建。并且在进行构建时都使用了标
准的 程序。程序从’中读取一系列规则,并用这
些规则创建程序。配置步骤所做的工作是产生’文件,也可能还产生
其它可能在构建过程中使用到的文件。
,和 都用特性测试来测试系统的兼容性。它们用
+!脚本(所有 版本都以不同形式支持 +!脚本)
运行不同的测试以确定系统支持的内容。
.$,的’,!脚本和原先的 ..,!脚本也是 +!
脚本。它们靠小的配置文件得到每个系统的变量,包括头文件
和’片段。在早期版本中,编译程序的使用者必须告诉脚本该程序是
为哪种系统构造的;后来 @!+!对其进行了改进,他编写的 脚本
能根据标准 程序和其它信息确定系统类型。
:是可移植的 .程序。它可以被定制以用于特定的系统,并作为软件包
构建的一部分来运行。但更常见的情况是,:和软件包一起发行,其中的
软件包包含了被支持的系统所需的所有配置信息。
,和 是程序作者使用的程序。它们产生的 脚本将
与程序的源代码一起散布。而想要构建程序的用户在程序要运行的系统上执行
这个 脚本,从而为源代码产生相应系统的配置。
.$,和 ..,!脚本E还有 E对于用户和开发人员使用来说
没有分别。
.$,和 ..,!脚本支持跨平台开发E两者都支持内建一个可以在
不同的平台上编译的跨平台的编译器,用来编译程序。
E,和 :没有这些功能 G他们最后加入了
H;它们只支持在它们各自工作的平台上编译程序。
6,生成的脚本是默认交互的I它们在执行时向用户询问。这样可以
使它们知道难于测试出的平台的特征,来确定平台下的执行方式。
.$,和 ..,!脚本E及 生成的脚本E程序不是
交互式的I它们自己决定任何事。 使用 时,包开发者一般会写命令
行的参数选项来决定它们不能检测出的功能,有时会要求用户在执行
‘,!脚本后写一个头文件。
5
剩余34页未读,继续阅读
资源评论
- zhangheyong2015-05-14对写makefile有帮助,收藏了
- 毛太2016-02-10貌似翻译到了第7章后面就没有了。 不过够看
- coder2019-01-04对写makefile有帮助,收藏了
- lee886882016-04-23很不错的资源,英文的看起来的确有点累
- fdsorg2015-11-01比较系统的介绍,可是只有前面几个章节的翻译,没有全部的,可惜了。
大筐魔头
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功