|
//*************************************************************
译序
初学linux系统,感觉linux底下的编译,链接程序真的很麻烦。
因此想到了用Autoconf等工具。找到了Autobook这本好书。
也不知道有没有人翻译过这本书。
该书由女友Ellen翻译,在此对她表示感谢。
该书原文请参考 http://sources.redhat.com/autobook/autobook/autobook_toc.html
如果翻译时有什么错误请
Ellengut2002@yahoo.com或者jasongut2002@126.com
转载请保留译序,3x.
//--------------------------------
1.简介
Autoconf, Automake and Libtool是将使你的软件更易于移植,并简化其创建过程的软件包。该创建过程通常是基于他人的系统。软件的可移植性和系统创建的有效性是对现代工程实践是十分关键的。人们在创建软件项目时不能期望它能在单一平台上运行。因为硬件局限性有可能改变对平台的选择,而拥有不同系统的新客户也可能出现,或者你的供应商也可能在他们新版本的操作系统中加入可兼容的改变。此外,使软件创建更简单更不易犯错误的工具也是十分有价值的。
Autoconf通过在软件包编译前运行测试来发现系统特性的方法使你的软件包更易于移植。这样你的源代码才能适应这些不同系统。
Automake是产生Makefile’s的工具。………Automake极大地简化了描述软件包结构的过程,并执行如追踪源文件间依赖关系之类的功能。
Libtool是编译器和连接器的命令行接口。无论运行在何种平台上,libtool都使得静态和共享库的移植更容易
转载请保留译序,3x.
//***************************************************************
第一章:
1.1本书涉及范围
本书是关于Autoconf, Automake and Libtool的教程(以下Autoconf, Automake 和Libtool均称为 GNU Autotools)。GNU手册将分别对这三种工具进行详细的阐述。迄今为止,还没有哪本指南描述过它们如何共同工作的。
虽然随着这些工具的发展,清楚相关问题的贡献者作了相应的设计,但是描述原理的文件却几乎没有。可能有人会问为什么Autoconf宏用以下的shell结构:
if test "x$var" = xbar; then
echo yes 1>&5
fi
而不是用以下更简单的结构:
if [ $var = bar ]; then
echo yes 1>&5
fi
本书将阐述其中的原由。
1.2 关于本书的性质
本书并不对Autoconf, Automake 或 Libtool的实例进行一一的描述。否则书中将充斥无用的信息。本书并不对由Autoconf提供的每一个预先定义的宏进行描述。相反,本书将帮助你理解你所遇到的任何宏,并影响你处理软件可移植性和软件包创建的方式。GNU手册只是参考工具书。
本书对相关概念只作简单介绍。本书会介绍如何写Makefile's和 Bourne shell脚本,但是你必须参考其他工具书以便熟悉这些主题。
1.3本书的使用对象
软件开发者,系统管理员和技术管理员很可能对关于GNU Autotools的书感兴趣。
软件开发者,特别是自由项目的开发者会认为了解如何使用这些工具是十分有价值的。GNU Autotools在自由软件社区中越来越受欢迎。室内项目的开发者如用这些工具也会受益非浅。
系统管理者能从这些工具的使用知识中受益。因为系统管理员的通常任务就是编译和安装使用GNU Autotools框架的软件包。偶尔,特性测试也会产生错误的结果而导致编译错误或程序异常。通常hacking就足以编译软件包了,但是知道解决问题的正确方法能够帮助软件包维护器。
最后,书中的讨论将使技术管理员对软件可移植性的复杂本质和创建大型项目的过程有进一步的了解。
1.4本书的结构
与任何一本好的教程一样,本书首先解释简单的概念,然后在这些基础知识上再进一步延伸至高层次的主题。
本书的第一部分将阐述这些工具的发展及其存在的原因。
第二部分则是本书的主要内容。首先解释Makefile's和configuration triplets之类的概念。此后的章节将逐一介绍各个工具及如何使用它们来处理不同规模的项目。如果用C和C++语言编写的程序十分粗糙的话,该程序将不可移植。第14和15章将分别指导如何用C和C++语言编写可移植程序。
第三部分提供的信息是你在其他任何参考书中都没法找到的。因为该部分是根据大量应用这些工具的实际经验编写而成的。其中有章节是关于一些高级但又十分重要的概念,如m4宏处理器及如何写可移植Bourne shell的脚本。第23章将概述如何把一个现存的软件包移植到GNU Autotools框架。许多开发者会对该章内容十分感兴趣,因为在交叉编译环境中使用GNU Autotools创建软件包是最令人困惑的。第25章将就此作出解释。 |
|