【问题标题】:Building libzmq with libsodium使用 libsodium 构建 libzmq
【发布时间】:2015-02-08 14:25:09
【问题描述】:

从 ZMQ 版本 4.1 开始编辑: Configure 会自动查找 libsodium,因此不再需要。如果由于某种原因您希望在没有 libsodium 的情况下构建它并且您已经构建并安装了它,请使用“--without-libsodium”配置 libzmq。


所以我在使用 libsodium 构建/制作 zeromq 时遇到问题。

我使用 msys2 作为外壳 - 特别是 mingw32_shell - ,以及带有 libsodium 1.0.1 和 mingw-w64 32bit (gcc 4.9.2) 的 zmq 4.1.0 rc1。

我目前能够像这样编译 libsodium

cd .../libsodium
bash configure
make
make check
make install

一切都很好,所有的测试都通过了,libs 和 include 最终都在 msys2 似乎知道的 /usr/local/ 文件夹中。

然后当我尝试使用这些命令构建 zeromq 时

cd .../zeromq
bash configure --with-libsodium
make
make check
make install

我从来没有通过配置阶段,因为配置返回

checking for sodium_init in -lsodium... no
configure: error: libsodium is not installed.  Install it or don't pass --with-libsodium to configure script

我已经尝试了这篇文章中建议的方法 - ZeroMQ doesn't spot libsodium - 但没有成功。

因此我的问题是:我如何设置 zeromq 的配置位置以查找要发现的 libsodium,是否使用 --with-libsodium、--with-libsodium-include-dir= 和 --with-libsodium -lib-dir=,还是将它们“安装”在 msys2 的 shell 能够找到的位置?

【问题讨论】:

  • cd .../libsodium 只是一个占位符,表示我在哪个文件夹

标签: windows zeromq configure libsodium msys2


【解决方案1】:

我假设你已经尝试过了,因为你提供的链接提到了它:

--with-libsodium=/usr/local

我试过这个,它对我有用。但是,我不建议这样做,因为对于 MSYS2,如果 /usr/local 仅用于 MSYS2 软件,而不是 MinGW-w64 软件,它会更干净。对于 MinGW-w64 i686 软件,'local' 的'right' 前缀是 /mingw32/local

我刚刚添加了 libsodium 作为对 zeromq 包的依赖项。

Github MinGW-w64 zeromq PKGBUILD commit e32ae0

明天我会要求 Alexey 重建并重新打包它。

【讨论】:

  • 我以为我已经尝试过那个特定的开关,但我刚刚尝试过它,它已经通过了checking for sodium_init in -lsodium... yes 阶段。我想我之前尝试的时候一定是打错了……
  • 另外,不要试图摆脱这个话题,但是当使用 msys2 的 mingw32_shell '版本'并调用 make install 时,libs 等都以 /usr/local 而不是 /mingw32/ 结束当地的。这是我在调用 make install 时需要指定某些内容的疏忽吗?
  • 并非如此,默认情况下,autotools 项目使用 /usr/local 前缀。我们没有对此进行任何更改,因为它们会变得丑陋且具有侵入性。为此,您应该通过 --prefix=/mingw32/local 进行配置。
  • 新的 zeromq 包(从 i686 和 x86_64 开始都是复数)已上传,以防您想使用官方 MSYS2 包。
猜你喜欢
  • 1970-01-01
  • 2015-06-15
  • 2020-05-07
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 2014-04-22
相关资源
最近更新 更多