编写PHP扩展之环境准备:GNU autoconf, automake,libtoolm4

PREPARING YOUR SYSTEM

While the result will run on any system, a developer’s setup needs these
tools:

GNU autoconf
GNU automake
GNU libtool
GNU m4

All of these are available from

ftp://ftp.gnu.org/pub/gnu/

PHP源代码目录下README.SELF-CONTAINED-EXTENSIONS文件如是说。
马上google了一下。

GNU autoconf

Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的 shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的,就是说配置脚本的用户并不需要拥有Autoconf。

由Autoconf生成的配置脚本在运行的时候不需要用户的手工干预;通常它们甚至不需要通过给出参数以确定系统的类型。相反,它们对软件包可能需要的各种特征进行独立的测试。(在每个测试之前,它们打印一个单行的消息以说明它们正在进行的检测,以使得用户不会因为等待脚本执行完毕而焦躁。)因此,它们在混合系统或者从各种常见Unix变种定制而成的系统中工作的很好。没有必要维护文件以储存由各个Unix变种、各个发行版本所支持的特征的列表。

对于每个使用了Autoconf的软件包,Autoconf从一个列举了该软件包需要的,或者可以使用的系统特征的列表的模板文件中生成配置脚本。在shell代码识别并响应了一个被列出的系统特征之后,Autoconf允许多个可能使用(或者需要)该特征的软件包共享该特征。如果后来因为某些原因需要调整shell代码,就只要在一个地方进行修改;所有的配置脚本都将被自动地重新生成以使用更新了的代码。

Metaconfig包在目的上与Autoconf很相似,但它生成的脚本需要用户的手工干预,在配置一个大的源代码树的时候这是十分不方便的。不象Metaconfig脚本,如果在编写脚本时小心谨慎, Autoconf可以支持交叉编译(cross-compiling)。

Autoconf目前还不能完成几项使软件包可移植的工作。其中包括为所有标准的目标自动创建`Makefile’文件,包括在缺少标准库函数和头文件的系统上提供替代品。目前正在为在将来添加这些特征而工作。
详细请看

GNU automake
Automake是一个从文件`Makefile.am’自动生成`Makefile.in’ 的工具。每个`Makefile.am’基本上是一系列make的宏定义(make规则也会偶尔出现)。生成的`Makefile.in’s服从GNU Makefile标准。

GNU Makefile标准文档(参见GNU编码标准中的‘Makefile惯例’节)长、复杂,而且会发生改变。Automake的目的就是解除个人GNU维护者维护Makefile的负担(并且让Automake的维护者来承担这个负担)。

典型的Automake输入文件是一系列简单的宏定义。处理所有这样的文件以创建 `Makefile.in’。在一个项目(project)的每个目录中通常包含一个 `Makefile.am’。

Automake在几个方面对一个项目做了限制;例如它假定项目使用Autoconf (参见Autoconf手册),并且对`configure.in’的内容施加了某些限制。

为生成`Makefile.in’,Automake需要perl。但是由Automake创建的发布完全服从GNU标准,并且在创建中不需要perl。

详细请看

GNU Libtool
GNU Libtool是一种属于GNU建构系统的GNU程序设计工具,用来产生可携式的库。这里引用libtool手册的说明:

在过去,如果源码包的开发人员要充分利用共享库的能力,就要为软件运行的每个平台写客制化的支持码,也要设计一个配置界面,使程序包安装程序可以选择以什么样的库建构。

GNU libtool藉著将平台特定的相依性,和用户界面,都封装在一个脚本中,来简化开发人员的工作。GNU libtool的目的是使每一个主机类型的完整功能都可以通过一个泛用接口来产生,又可以免去一堆讨厌的错误消息。

GNU libtool的接口目标是一致的。开发人员在建立源码包建构共享库时,应该不用去读低级的文件,他们只需要运行软件包的配置脚本(或同性质的文件),而让libtool去照顾细节。

通常libtool是与GNU建构系统中的autoconf和automake这两个工具一起使用。

详细请看

GNU m4
GNU m4为m4宏前处理器的GNU版本。其目的是为了避免传统m4前处理器中的多种限制,诸如对行长度的最大值限制,宏大小的最大值限制,宏数量的限制等。拿掉这些霸道的限制是GNU计划的既定目标之一。

GNU Autoconf包使GNU m4的功能得以广为使用。

GNU m4目前是由Eric Blake来维护

详细请看

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

还没有评论。

发表评论

(必填)

(必填)


MC Inside