我正在尝试安装YAML :: Syck模块(我实际上是在尝试安装Date :: Manip,这只是一个依赖项),但它失败并显示以下消息:
This module requires a C compiler at Makefile.PL line 38.
无论我尝试使用CPAN进行安装,还是尝试下载软件包并手动安装,都会发生这种情况。
我安装了gcc,在我的PATH上,我可以从我试图用来安装YAML :: Syck的同一个CYGWIN shell窗口访问它。
答案 0 :(得分:8)
在寻找C编译器时,ExtUtils::MakeMaker
和Module::Build
不一定在gcc
中查找PATH
,而是查询perl的C编译器配置已构建,并期望它也可用于构建Perl扩展。
在我的系统上,它会根据
在cc
中查找PATH
$ perl -MConfig -E'say $Config{cc}'
cc
答案 1 :(得分:3)
在编译模块方面,过去我遇到过麻烦,只需要与cygwin一起“正常工作”。您可能需要查看Strawberry Perl,这是一个Windows Perl发行版,它与编译XS模块所需的所有组件捆绑在一起。我没有亲自尝试使用它安装YAML::Syck
,但我安装了许多其他XS模块而没有发生任何事故。
一旦安装并且在您的路径中(通常是自动),您应该能够从Windows命令提示符运行cpan
来安装模块。
答案 2 :(得分:1)
维护者说话
更好的论坛是 cygwin邮件列表。在那里,你会发现一遍又一遍地问同样的问题,我们可以指出信息,以及 维护者在场。 答案的质量会好得多。 官方最新的perl公告是http://sourceware.org/ml/cygwin-announce/2012-07/msg00011.html
perl用于将最有用的CPAN和测试模块与核心perl捆绑在一起。 使用最新的5.14软件包,有用的模块被移动到单独的软件包 perl_vendor 。 不包括能够通过cpan编译模块的依赖项。 您至少需要 make 和 gcc-4 。 有关特定于软件包的自述文件,请参阅 /usr/share/doc/Cygwin/perl.README 。
YAML :: Syck 被视为已损坏且未维护(* _why * left),请尝试使用更好的YAML包,例如 YAML 或 YAML: :XS ,由发明者和YAML本身的作者( ingy )撰写。 Date :: Manip 不需要 YAML :: Syck 。 cpan 喜欢拥有YAML模块,但更喜欢 YAML :: XS 。
你会发现你可以使用 cygwin perl 安装更多的软件包而不是 strawberry perl (= mingw)。