这个问题以及此处的大多数其他答案是由于对使用GNU Build System(又名Autotools)的项目如何分布的误解引起的。实际上,对于OP提到的Erlang XMPP库,这种误解似乎是开发人员的责任。
以正确的方式获得软件
如果您要做的只是编译并安装随GNU Autotools发布的项目,则不应从源代码控制系统中检出它。您应该下载开发人员提供的打包的源发行版。这些通常采用在项目网站上分发的压缩包的形式。对于完全托管在GitHub,Savannah或某些类似托管服务上的项目,通常会在一些标记为“下载”或“发布”的链接后面找到这些tarball。打开包装,说出标准./configure && make && sudo make install
咒语的一些变体。就这样; 您不需要调用任何GNU Autotools,甚至不需要在系统上安装GNU Autotools。
用户(您)不需要GNU Autotools来编译Autotools打包的项目的原因是,开发人员已经使用了各种Autotools程序来生成“发行包”,该发行包可用于在任何平台上构建软件。类似Unix的系统。发行版tarball包含一个高度可移植的configure
脚本,该脚本可扫描构建环境,检查相关性并Makefile
为您的系统构建定制的脚本。
那么什么时候需要Autotools?
您需要自行安装和调用GNU Autotools的唯一原因是,如果您要在使用Autotools构建的项目上进行开发工作。即使那样,除非您更改项目的依赖关系,否则您可能仍不需要Autotools。在那种情况下,您确实确实需要检出原始源文件configure.ac
,对Autotools专用的输入文件(Makefile.am
,等)进行适当的更改,然后在它们上运行Autotools以生成新configure
文件。如果要独立发布修订的程序包,则可以使用Autotools生成的Makefile生成新的发行版tarball,然后将该tarball在线发布。
问题在于,一些开发人员将其源代码库公开可用,但忽略了发布发行包(或使其很难找到发布位置)。例如,而不是发布其分布压缩包为GitHub上发布,在二郎XMPP库的GitHub上发布的原始源代码库的压缩包。如果没有GNU Autotools,就不可能编译项目,从而一开始就破坏了使用Autotools的全部目的。
TL; DR摘要
GNU Autotools是开发人员用来为用户制作可移植源代码包的工具。 用户应从这些源程序包而不是源代码控制系统中的原始代码下载并编译。如果开发人员不提供这些源代码包,则说明他们没有正确使用Autotools,应该用湿鳟鱼轻轻拍打他们,直到看到自己的方式错误为止。