介绍

优质
小牛编辑
155浏览
2023-12-01
A physicist, an engineer, and a computer scientist were discussing the nature of God. Surely a Physicist, said the physicist, because early in the Creation, God made Light; and you know, Maxwell's equations, the dual nature of electro-magnetic waves, the relativist consequences... An Engineer!, said the engineer, because before making Light, God split the Chaos into Land and Water; it takes a hell of an engineer to handle that big amount of mud, and orderly separation of solids fromliquids... The computer scientist shouted: And the Chaos, where do you think it was coming from, hmm? ---Anonymous

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

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

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

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

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

对于在C程序中的#ifdef中使用的宏的名字,Autoconf施加了一些限制 (参见 预处理器符号索引 )。

Autoconf需要GNU m4以便于生成脚本。它使用了某些UNIX版本的m4 所不支持的特征。它还会超出包括GNU m4 1.0在内的某些m4版本的内部限制。你必须使用GNU m4的1.1版或者更新的版本。使用1.3版或者更新的版本将比1.1 或1.2版快许多。

关于从版本1中升级的详情,参见 从版本1中升级 。 关于Autoconf的开发历史,参见 Autoconf的历史 。 对与Autoconf有关的常见问题的回答,参见 关于Autoconf的问题 。

把关于Autoconf的建议和bug报告发送到bug-gnu-utils@prep.ai.mit.edu。 请把你通过运行'autoconf --version'而获得的Autoconf的版本号包括在内。