在 ac-aux 中找不到 install-sh、install.sh 或 shtool

在 ac-aux 中找不到 install-sh、install.sh 或 shtool

这是我第一次尝试在 Linux 机器上编译和安装任何东西。我得到了最新版本的https://github.com/processone/exmpp通过 git 并阅读说明,其中指出:

2. 构建并安装

Exmpp 使用 Autotools。因此,该过程非常常见:

$ ./configure
$ make
$ sudo make install

输入后./configure我收到错误

在 ac-aux 中找不到 install-sh、install.sh 或 shtool

谷歌几乎没有任何帮助。我完全不知道该怎么做。任何帮助我都会非常感激

答案1

我使用以下工具来创建配置脚本:

libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure

我没有所有的依赖项,所以我现在无法测试它,但这通常是你从 ac 文件创建配置脚本的方式。

答案2

好吧,我尝试了 sebastian_k 的答案,但它对我没有用(./configure中途崩溃并出现非常奇怪的错误)。

然而,对我有用的是复制这个我找到的构建日志

简短版本(因此您不必亲自研究)是:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install

答案3

这个问题,以及这里的大多数其他答案,都源于对使用GNU 构建系统(又名 Autotools)是分布式的。事实上,在Erlang XMPP 库正如原帖作者所言,误解似乎是出在开发人员方面。

以正确的方式获取软件

如果你想要做的只是编译和安装使用 GNU Autotools 发布的项目,那么你不应该从源代码控制系统中检出它。你应该下载打包源代码发布由开发人员提供。这些通常以 tarball 的形式分发在项目的网站上。对于完全托管在 GitHub、Savannah 或某些类似托管服务上的项目,这些 tarball 通常位于标有“下载”或“发布”的链接后面。您解压包并说出标准./configure && make && sudo make install咒语的某种变体。就是这样;您不需要调用任何 GNU Autotools,甚至不需要在系统上安装 GNU Autotools。

你(用户)不需要 GNU Autotools 来编译 Autotools 打包的项目的原因是,开发人员已经已经使用各种 Autotools 程序生成“分发 tarball”,可用于在任何类 Unix 系统上构建软件。分发 tarball 包含一个高度可移植的configure脚本,该脚本可扫描构建环境、检查依赖项并构建Makefile针对您系统的自定义脚本。

那么什么时候需要 Autotools?

你需要自己安装和调用 GNU Autotools 的唯一原因是如果你想做发展使用 Autotools 构建的项目。即便如此,除非您更改项目的依赖项,否则您可能不需要 Autotools。在这种情况下,您确实需要签出原始源代码,对 Autotools 特定的输入文件(configure.acMakefile.am等)进行适当的更改,然后在它们上运行 Autotools 以生成新configure文件。如果您想独立发布修订后的软件包,那么您将使用 Autotools 生成的 Makefile 来生成新的分发 tarball,然后将该 tarball 发布到网上的某个地方。

问题在于,一些开发人员将他们的源代码存储库公开,但却忽略了发布他们的发行版 tarball(或者很难找到它们的发布位置)。例如,将他们的发行版 tarball 发布为 GitHub Releases, 这Erlang XMPP 库的 GitHub 发布是原始源代码存储库的 tarball。这使得在没有 GNU Autotools 的情况下无法编译项目,从而违背了使用 Autotools 的初衷。

TL;DR 总结

GNU Autotools 是开发商用于为用户制作可移植的源代码包。 用户应该从这些源包下载并编译,而不是从源代码控制系统下载并编译原始代码。如果开发人员不提供这些源包,那么他们就没有正确使用 Autotools,应该用湿鳟鱼轻轻拍打直到他们认识到自己的错误。

答案4

我遇到了这个问题,并发现这是由于以下行造成的configure.ac

AC_CONFIG_AUX_DIR([build-aux])

这条线本身并不坏,但是需要将其移到更靠近configure.ac文件顶部的位置。

相关内容