我正在尝试通过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
答案 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
运行:
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 :: LibXMLdmake install
旁注:我知道这个问题已经很老了,但我把这个解决方案作为参考,以便其他人在未来遇到同样的问题(也许我就是其中之一......)。
答案 2 :(得分:0)
安装Strawberry Perl,它附带了XML :: LibXML及其内置的依赖项。