我是Autotools的新手。根据我的理解,可以使用以下基本步骤使用Autotools构建软件:
autoreconf --install
./configure
make
但是,我注意到大多数开源软件包(在Linux上)不需要第1步。他们大部分时间只需要第2步和第3步来构建。它们似乎已与Makefile.in
打包在一起。我想知道为什么?在创建软件包之前,他们是手动编码Makefile.in
,还是软件开发人员使用autoreconf
生成Makefile.in
?
感谢。
答案 0 :(得分:9)
创建tarball(或从版本控制系统检出来源的人)的软件开发人员通常会从名为autoreconf
或bootstrap.sh
的脚本中调用autogen.sh
东西。 autoreconf
也可能会调用Makefile
(就像configure.ac
更改时一样)。
大多数用户从不需要运行autoreconf
,即使是那些对源进行一些修改的用户(例如补丁)。只有那些需要对包本身进行修改(对configure.ac
和/或Makefile.am
进行更改)的人才需要autoreconf
。
答案 1 :(得分:3)
运行autoreconf
需要安装正确版本的autotools。这会导致鸡蛋问题 - 如何首先安装自动工具?它还增加了大多数最终用户并不真正需要的额外依赖。
因此,大多数打包程序在生成它们分发的源代码压缩包之前运行autoreconf。这意味着如果您下载这样的tarball,您可以配置和构建它,而无需先安装autotools。