这是我第一次尝试在 linux 机器上编译和安装任何东西。我通过 git 获得了最新版本的https://github.com/processone/exmpp并阅读了说明:
2.构建和安装
Exmpp 使用 Autotools。所以这个过程很常见:
$ ./configure $ make $ sudo make install
输入后./configure
我得到错误
在 ac-aux 中找不到 install-sh、install.sh 或 shtool
谷歌几乎没有帮助。完全不确定我应该做什么。任何帮助将非常感激
我使用以下工具创建了配置脚本:
我没有所有依赖项,所以我现在无法对其进行测试,但这通常是您从 ac 文件创建配置脚本的方式。
好吧,我尝试了 sebastian_k 的答案,但它对我不起作用(
./configure
中途因极其奇怪的错误而崩溃)。做了什么,但是对我有用的是复制我发现的此构建日志中使用的说明
简短的版本(所以你不必自己涉水)是:
这个问题以及这里的大多数其他答案都源于对使用GNU 构建系统(又名 Autotools)的项目如何分发的误解。事实上,在 OP 提到的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.ac
,Makefile.am
然后在它们上运行 Autotools 以生成新configure
文件。如果您想独立发布修改后的包,那么您将使用 Autotools 生成的 Makefile 生成新的分发 tarball,然后将该 tarball 在线发布到某个地方。问题是一些开发人员公开了他们的源代码库,但忽略了发布他们的分发 tarball(或者很难找到它们的发布位置)。例如,Erlang XMPP 库的 GitHub Releases不是将其分发 tarball 发布为 GitHub Releases,而是原始源存储库的 tarball。这使得在没有 GNU Autotools 的情况下无法编译项目,首先违背了使用 Autotools 的全部目的。
TL;DR 总结
GNU Autotools 是开发人员用来为用户制作可移植源代码包的东西。 用户应该从这些源代码包下载和编译,而不是源代码控制系统的原始代码。如果开发人员没有提供这些源包,那么他们就没有正确使用 Autotools,应该用湿鳟鱼轻轻拍打,直到他们发现自己的方式错误。
请执行以下操作来解决此问题,
然后进行安装
我遇到了这个问题,发现这是由于以下行
configure.ac
:该行本身还不错,但是需要将其移近
configure.ac
文件顶部。在尝试从 Mercurial 存储库编译 GNU Octave 时,您可能会遇到这个问题。修复是
./bootstrap
在源代码树的根目录中运行。sudo apt-get install automake autoconf
它的工作成功
我有稍微不同的错误:
configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.."
原来configure找不到
build-aux/install-sh
。我像这样链接它ln -s build-aux/install-sh .
然后它建立。
希望能帮助那里的人!
当我尝试
./configure
使用源代码并得到与发布的相同的错误时,我遇到了类似的问题。最后通过输入代码解决了我的问题:安装
autogen
软件包后,此错误在 build.xml 中得到解决wolfSSL
。