11

我正在尝试在草莓 perl 上安装 ZMQ::LibZMQ3,但在安装此模块时收到以下错误消息,我的 zmq 库和包含位于 C:\Program Files\ZeroMQ 3.2.2 下:

cpan> install ZMQ::LibZMQ3

Running install for module 'ZMQ::LibZMQ3'
Running make for D/DM/DMAKI/ZMQ-LibZMQ3-1.09.tar.gz
Checksum for C:\strawberry\cpan\sources\authors\id\D\DM\DMAKI\ZMQ-LibZMQ3-1.09.tar.gz ok
Scanning cache C:\strawberry\cpan\build for sizes
............................................................................DONE

  CPAN.pm: Building D/DM/DMAKI/ZMQ-LibZMQ3-1.09.tar.gz

Cannot determine perl version info from lib/ZMQ/LibZMQ3.pm
Probing environment variables:
Probing libzmq via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.
 - No libzmq found...
Probing zeromq3 via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.
 - No zeromq3 found...
Detected the following ZMQ settings:
 + ZMQ_HOME = "C:\Program Files\ZeroMQ 3.2.2"
 + ZMQ_H = "C:\Program Files\ZeroMQ 3.2.2\include\zmq.h"
 + ZMQ_INCLUDES = "C:\Program Files\ZeroMQ 3.2.2\include"
 + ZMQ_LIBS = "C:\Program Files\ZeroMQ 3.2.2\lib"
 + ZMQ_TRACE = (null)
Can't link/include C library 'zmq.h', 'zmq', aborting.
Warning: No success on command[C:\strawberry\perl\bin\perl.exe Makefile.PL]
  DMAKI/ZMQ-LibZMQ3-1.09.tar.gz
  C:\strawberry\perl\bin\perl.exe Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Stopping: 'install' failed for 'ZMQ::LibZMQ3'.
Failed during this command:
 DMAKI/ZMQ-LibZMQ3-1.09.tar.gz                : writemakefile NO 'C:\strawberry\perl\bin\perl.exe Ma
kefile.PL' returned status 512

是否可以在 Windows 上安装这个 cpan 模块,如果可以,有人可以帮忙这里可能是什么问题?

4

3 回答 3

4

我刚刚在我的 ActiveStatePerl 环境中尝试过。

首先我得到了相同的结果,但后来我重命名了我的 ZMQ 安装并删除了空格。

(从C:\App\ZeroMQ 2.2.0C:\App\ZeroMQ2_2_0。)

+ ZMQ_HOME = C:\App\ZeroMQ2_2_0
+ ZMQ_H = C:\App\ZeroMQ2_2_0\include\zmq.h
+ ZMQ_INCLUDES = C:\App\ZeroMQ2_2_0\include
+ ZMQ_LIBS = C:\App\ZeroMQ2_2_0\lib
+ ZMQ_TRACE = (null)

所以我通过了问题

Can't link/include C library 'zmq.h', 'zmq', aborting.

并在 Makefile.PL 中进行下一步

Detecting zmq version...

(这在我的系统上失败了,因为我有一个 0mq 2.2.0 并且 perl 绑定需要 3.3)

希望这也对你有用。

于 2013-03-03T08:59:07.603 回答
3

您使用的是草莓 Perl 还是 ActiveState Perl?Active State Perl 在从 CPAN 安装时可能会遇到问题,除非您已经获得nmake并安装了 MinGW 实用程序。我担心这个:

Probing libzmq via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.

这给我带来了巨大的危险信号。当我尝试安装时,我也注意到了这个小曲子:

Detected the following ZMQ settings:
 + ZMQ_HOME = (null)
 + ZMQ_H = (null)
 + ZMQ_INCLUDES = (null)
 + ZMQ_LIBS = (null)
 + ZMQ_TRACE = (null)

嗯..我必须先设置这些环境变量。

接下来,我无法链接/包含 C 库“zmq”,正在中止。这是来自assertMakefile中的。我在Github上发现了这个问题。它说:

啊,不错的指针。pthread_create 问题。我的 perl 是用线程支持编译的。我已经重新编译了 perl,这个问题已经消失了。

嗯,是的,Strawberry Perl 是用线程支持编译的。而且,我不会重新编译它。

我推荐的是以下内容:

  • 将 ZMQ 安装在名称中没有空格的目录中。我直接安装在C:\ZeroMQ-3.2.2.
  • 定义那些环境变量。我查看了 Makefile.PL,它需要ZMQ_LIBSZMQ_INCLUDES.
  • 确保您只使用 Strawberry Perl 而不是 ActiveState。您可以使用 ActiveState,但需要对类似的东西进行一些调整。
  • 在 Makefile.PL 中添加该 Debug 标志debug => 1(这意味着您必须执行从命令行运行的 Makefile 安装的手动方法perl Makefile.PL

如果没有线程支持,我不会下载和重新编译 Perl,看看这是否可行。我希望我已经把你送到了正确的道路上。

于 2013-03-04T23:54:39.460 回答
2

这个包不会安装在我的基于 ActiveState Perl Windows 的机器上——尽管一些 ZMQ 包会。似乎在 Windows/Perl 下的支持充其量是有限的。

请参阅此页面: https ://github.com/lestrrat/p5-ZMQ/issues/14 因为 Strawberry Perl 似乎确实存在已知问题。

讨厌添加这个(不喜欢 Python),但它似乎在 Windows 下使用 Python 2.7 工作。只是做了一个快速安装并运行了包含的测试,它通过了。文档还说 Java 在 Windows 下也能很好地工作。

如果您不是 64 位,这可能会有所帮助(来自 laufeyjarson):

A work-around is to change $^I to have a backup. I used ~ like gvim does:

Line 100 of Makefile.PL:
local $^I = '~';
EDIT:  On recent versions, it is line 203 - JimB

That lets the Makefile.PL work.
于 2013-03-03T03:17:21.620 回答