Linux 为什么是;“自动经济”;不经常使用?
我是自动工具的新手。根据我的理解,可以使用以下基本步骤使用Autotools构建软件:Linux 为什么是;“自动经济”;不经常使用?,linux,autotools,autoreconf,Linux,Autotools,Autoreconf,我是自动工具的新手。根据我的理解,可以使用以下基本步骤使用Autotools构建软件: autoreconf--install /configure make 然而,我注意到大多数开源软件包(Linux上)不需要步骤1。他们大多数时候只需要第2步和第3步来构建。似乎它们已经与Makefile.in打包在一起了。我想知道为什么?在创建软件包之前,他们是手动编写Makefile.in,还是软件开发人员使用autoeconf生成Makefile.in 谢谢。创建tarball(或从版本控制系统检查源代
autoreconf--install
/configure
make
Makefile.in
打包在一起了。我想知道为什么?在创建软件包之前,他们是手动编写Makefile.in
,还是软件开发人员使用autoeconf
生成Makefile.in
谢谢。创建tarball(或从版本控制系统检查源代码)的软件开发人员通常会从名为
bootstrap.sh
或autogen.sh
的脚本中调用autoeconf
,该脚本可能会执行其他操作autoreconf
也可以由Makefile
调用(如configure.ac
已更改时)
大多数用户永远不需要运行
autoreconf
,即使是那些正在对源代码进行一些修改的用户(例如修补程序)。只有那些需要修改软件包本身(更改configure.ac
和/或Makefile.am
)的用户才需要autoeconf
,运行autoeconf
需要已经安装正确版本的autotools。这导致了一个鸡和蛋的问题——首先,如何安装自动工具?它还增加了大多数最终用户并不真正需要的额外依赖性
因此,大多数打包程序在生成他们分发的源tarball之前运行autoeconf。这意味着,如果您下载这样一个tarball,您可以配置和构建它,而无需先安装autotools。OK。我想我自己也得到了一个可能的答案:通过不需要用户运行“autoreconf”,软件包对最终用户的系统提出了更少的要求。即,最终用户无需安装自动工具。我认为这其实是一个很大很好的理由;运行
configure
时,用户所需要的只是两个脚本解释器(一个Bourne shell、sed,可能还有perl),以及编译器工具链。即使缺少所有库依赖项,configure
脚本也应该能够运行并诊断问题或解决问题。当您运行make dist gzip
时,您会得到一个带有configure
脚本的tarball,以及所有*。在打包的模板文件中,用户不必执行前面需要自动工具的步骤。如果您想从源代码引导系统而不使用预先生成的configure
脚本,那么,不使用autotools/configure直接安装autotools也不是不可能的(autoconf
只是一个shell脚本,您只需要替换一些可以用sed
完成的占位符变量)。一旦有了一个版本的autotools,引导其他版本就容易多了。