【问题标题】:Any ZMQ bindings for Erlang on Windows?Windows 上 Erlang 的任何 ZMQ 绑定?
【发布时间】:2014-01-17 12:44:38
【问题描述】:

是否可以在 Windows 上使用 Erlang 和 ZMQ?我曾尝试使用erlzmq2,但rebar 无法通过神秘的链接器错误编译它。当然我可以花一些时间研究一下makefile,但也许还有其他方法存在?

更新

对编译错误感兴趣的可以下载最新的 erlang for windows 并尝试构建 erlzmq2(Visual Studio 2012 编译器,msysshmake)。错误看起来像:

cl : Command line error D8021 : invalid numeric argument '/Wl,-DLL,-IMPLIB:.libs
\zmq.dll.lib'
Makefile:541: recipe for target 'libzmq.la' failed
make[3]: *** [libzmq.la] Error 2

请注意,其他 erlang 库正在使用此设置进行编译,没有任何问题。

【问题讨论】:

标签: erlang zeromq


【解决方案1】:

您的问题在于为 Windows 编译 ZeroMQ。你实际上还没有接触过任何 Erlang。以下是一些可以告诉您这一点的线索:

Makefile:541:目标“libzmq.la”的配方失败

这行说 Makefile 的第 541 行有问题。但是在erlzmq2 中,您可以看到the main Makefilec_src Makefile(将构建libzmq.la)都没有接近那么多行。

make3: * [libzmq.la] 错误 2

[3] 表示您对 Make 进行了 3 次调用。具体来说,您从名为 Rebar 的顶级 Makefile 开始,它运行 make -C c_src,它下载 ZeroMQ 版本 3.2.2 并尝试执行 ./configure && make

要修复这种 Unix 风格,请进入 erlzmq2 的 deps 目录并找出如何正确编译 ZeroMQ。希望您只需将一些参数传递给configure。然后您可以编辑c_src/Makefile 并将ZMQ_FLAGS 设置为您必须为配置、清理和制作所做的任何事情。

要以 Windows 风格修复它,请按照 ZeroMQ 的 Windows 构建说明进行操作。将编译好的 libzmq 放在 deps 下,只需将 c_src Makefile 编辑为 no-op。

最后,如果您实际上不需要在 Windows 上运行此代码,而只是使用 Windows 作为您的开发环境,我认为通过在 Linux 虚拟机中运行构建(不难使用 Vagrant 之类的工具完全没有问题)。抱歉,Unix 是这个东西的真正系统; Windows 支持是事后才想到的。

【讨论】:

  • 非常感谢。正如我在问题中提到的,我可以修改 makefile,但希望有人已经这样做了,或者可以使用已经编译的版本。
猜你喜欢
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2023-03-28
  • 2020-04-27
  • 1970-01-01
  • 2016-06-14
  • 2018-02-25
相关资源
最近更新 更多