Perl XML :: LibXML安装失败

时间:2012-12-12 06:28:19

标签: xml perl libxml2

我正在尝试通过CPAN安装Perl XML :: LibXML模块,但收到以下错误。 我正在使用Windows 7机器和Perl v5.16.1。我做了很多搜索,但没有得到任何解决方案。

应该是什么问题?

Set up gcc environment - 3.4.5 (mingw-vista special r3)
enable native perl UTF8
Checking for ability to link against xml2...no
Checking for ability to link against libxml2...libxml2, zlib, and/or the Math library (-lm) have not been found.
Try setting LIBS and INC values on the command line
Or get libxml2 from
  http://xmlsoft.org/
If you install via RPMs, make sure you also install the -devel
RPMs, as this is where the headers (.h files) are.

Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
to see the exact reason why the detection of libxml2 installation
failed or why Makefile.PL was not able to compile a test program.
**No 'Makefile' created  SHLOMIF/XML-LibXML-2.0014.tar.gz
  C:\Perl\bin\perl.exe Makefile.PL INSTALLDIRS=site -- NOT OK**
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
**Could not read metadata file. Falling back to other methods to determine prerequisites**
Failed during this command:
 SHLOMIF/XML-LibXML-2.0014.tar.gz             : writemakefile NO -- No 'Makefile' created

3 个答案:

答案 0 :(得分:5)

目前尚不清楚您使用的是哪种Perl发行版。在Windows上,最简单的方法是使用ActivePerl及其原生包管理器ppm(而不是CPAN)。

在我的Windows 7计算机上,使用此命令可以毫无问题地安装XML::LibXML

ppm install XML::LibXML

答案 1 :(得分:0)

对于Windows上的ActivePerl,由于缺少必须手动安装的依赖项,因此不再通过PPM提供XML :: LibXML。

通过CPAN安装是正确的方法,但您需要确保libxml2及其依赖项存在。它们是XML :: LibXML所必需的。

安装(取自here,感谢Rudy Rodriguez)是一条漫长而曲折的道路,但它有效(Win 8.1,ActivePerl 5.20.1 x64):

  • 获取所需的二进制包libxml2,iconv,zlib(全部来自here)和gettext-tools

  • 将所有文件解压缩到同一目录(例如C:\ perl_libxml \ merged),以便每个zip文件中include,lib等子目录中的文件被提取到一个公共包含,lib等目录

  • 将/ libxml2 / libxml文件夹向上移动一级,即移至/ libxml,因为这是预期的默认目录

  • 将libz.a重命名为zlib.a(在lib目录中)

  • 安装依赖项

    ppm install dmake MinGW XML::NamespaceSupport XML::SAX
    
  • 将c:\ perl_libxml \ merged \ bin添加到Windows PATH
  • 转到失败的cpan构建所在的目录,例如C:\ perl64 \ CPAN \构建\ XML-的libxml< ...>
  • 运行:

    Makefile.PL INC=-IC:\perl_libxml\merged\include LIBS=-LC:\perl_libxml\merged\lib
    

    Makefile的构建应该会成功。如果没有,检查LIBS和INC参数是否指向正确的目录

  • dmake
    

    如果失败,请检查您的路径条目是否已正确设置

  • dmake test
    

    如果'dmake test'失败并出现如下隐藏错误:

    load_file:%1 is not a valid Win32 application at C:/Perl64/lib/DynaLoader.pm line 191
    

    可能是某些库的不同版本存在于您的PATH中,因此在构建期间会链接。

    我的PATH中有另一个MinGW环境,导致链接错误的库。我可以通过使用Windows Server 2003 platform SDK中的'depends'工具检查构建的libxml.dll来解决它。您可以看到libxml.dll使用了哪个DLL以及为其编译了什么平台。所有这些必须匹配并匹配您的Perl版本,x86或x64。

  • 如果测试成功,最后使用

    安装XML :: LibXML
    dmake install
    

旁注:我知道这个问题已经很老了,但我把这个解决方案作为参考,以便其他人在未来遇到同样的问题(也许我就是其中之一......)。

答案 2 :(得分:0)

安装Strawberry Perl,它附带了XML :: LibXML及其内置的依赖项。