GNU Autoconf手册翻译(2)

1.         Gnu构建系统

Autoconf解决一个重要的问题—发现可靠的系统相关的构建和运行时信息—但是对于可移植软件开发来说,这只是问题的一方面。为此,gnu项目开发了一套集成工具去完成这一Autoconf所开始的工作:gnu构建环境,它最重要的组件是AutoconfAutomakeLibtool。在这一章,我们将向你介绍这些工具,并且提供关于此的更多的信息源,以尝试说服你在你的软件中使用这整个gnu构建系统。

1.1.        Automake

Make的广泛使用使得Makefiles几乎成为发布软件自动构建规则唯一可靠的方法,但是你还将遇到许多问题。因为它缺乏自动依赖跟踪,缺乏各子目录中的递归构建功能,缺乏可靠的时间戳(例如,对于网络文件系统),等等。所以开发者就必须去重新实现这些功能,而通常是比较痛苦的,而且还会经常出错。兼容性也不是个小问题,因为许多系统上的make有一些奇怪的特性。最首要的是你需要手动的实现许多标准的,用户所期望的make目标(make installmake distcleanmake uninstall,等等)。当然,因为你正在使用Autoconf,你还需要反复的将相关代码插入makefile.in中去以识别@CC@@CFLAGS@,以及其他的configure所提供的变量替换。

Automake允许你在一个Makefile.am文件中指定你的构建要求——使用一种比Makefile简单的多并且强大的多的语法,随后可通过Makefile.am生成Makefile.in,这个文件将会被Autoconf所用到。例如,构建和安装一个简单的“Hello world”程序要用到的Makefile.am可以是这个样子的:

bin_PROGRAM = hello

hello_SOURCES = hello.c

那么相应生成的Makefile.in文件(约400行)将自动的支持所有的标准编译目标,Autoconf所提供的所有变量替换,以及自动的依赖跟踪,VPATH构建等等。Make编译hello程序,make install把它安装到‘/usr/local/bin’目录之下(或者其他的任何传递给configure的前缀,如果指定了的话)。

Automake不只将对大型项目带来巨大的益处(尤其是那些含有子目录的项目),它给小型项目带来的方便和兼容性也是相当巨大的。而这还不是所有。。。

1.2.        Gnulib

Gnu因为能在许多种不同的系统上运行而获得了当之无愧的好评。尽管我们的最初目的只是为gnu系统编写软件,但是还是有许多使用其他系统的用户或者开发者为此受益。

Gnulib处于gnu代码的中心位置,它的目的是能被各种自由软件共享。它的各个组件是在源码级上被共享,而不是在需要编译,安装,连接的库级别上。用法就是简单的将文件从gnulib拷贝到你自己的源码树下。gnulib没有用于发布的tarball;开发者必须从库中才能获取源代码。源代码可以从线上获取,当然在各种许可证的保护之下,最主要的有gnu gpl或者gnu lgpl

Gnulib模块包含有c源代码以及配置源代码的Autoconf宏。例如,gnulib stdbool模块便实现了一个几乎符合c99标准的stdbool.h头文件,这对于老式的缺少stdbool.h的主机是很有用的。这一模块包含了用来替换头文件的源文件,以及一个Autoconf宏,它用来在老式系统上使用这一替代文件。

1.3.        Libtool

通常,我们不仅想去安装程序,而且还想安装库,从而使得其它的程序能够共享我们的劳动果实。其实人们更喜欢去生成共享库(动态链接),这些库能够被多个程序所使用,但是去不需要在磁盘或者内存中复制它们,而且能够独立于连接程序进行升级。但是,兼容的创建共享库是一件非常困难的事情——每个系统由他自有的不被兼容的工具,编译标志,以及其他乱七八糟的东西。不过幸运的是,gnu提供了一个解决方案:libtool

Libtool将会为你处理编译共享库的所有要求,在目前这似乎是满足兼容性的唯一办法。它还能处理许多其他的难题,例如:make规则和共享库各个后缀之间的交互,在被超级用户安装之前如何可靠的连接共享库,以及提供一个持续的版本系统(因此一个库的不同版本能够被安装或者被升级,而不影响兼容性)。尽管跟Autoconf一样,libtool也能在没有Automake的情况下使用,但是它还是经常的跟Automake一起使用——在任何需要共享库的情况下,libtool都将会被自动调用,而你却并不需要知道它的语法。

1.4.        Pointers

那些只在单一系统的小项目上使用make的简单特性的开发者可会在学习AutoconfAutomake时望而却步。但是当你的软件在多于两个用户之间发布的时候,你马上就会发现你花了大量的精力去完成gnu build tools本能提供的功能,而且还可能一次又一次犯下同样的错误。(而且,因为你已经学会了Autoconf,那么Automake就只是个小case了。)

你能够从许多地方获得关于gnu构建工具的更多的信息。

——网络

         AutoconfAutomakegnuliblibtool等项目的主页。

——Automake手册

         参看gnu AutomakeAutomake节获取更多的关于Automake的信息。

——书籍

Gnu Autoconf Automakelibtool详细的描述了整个gnu构建环境。你能在线上找到这本书的全文。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值