尝试在64位计算机上构建代码时出现以下错误。
Can't load '/e/pkgs/linux/intel/perl/5.8.0/lib/site_perl/5.8.0/i686-linux/auto/XML/LibXML/Common/Common.so'
for module XML::LibXML::Common: libxml2.so.2: wrong ELF class: ELFCLASS64
at /e/pkgs/linux/intel/perl/5.8.0/lib/5.8.0/i686-linux/DynaLoader.pm line 229.
at /e/pkgs/linux/intel/perl/5.8.0/lib/site_perl/5.8.0/i686-linux/XML/LibXML.pm line 11
perl是32位,但我的机器上有32位和64位版本的libxml2.so.2。它是否尝试使用64位版本的libxml2?
答案 0 :(得分:2)
您无法加载的库是支持Perl XML::LibXML::Common
模块的库,而不是libxml2
库。大多数纯Perl模块在不同版本的perl甚至不同平台上都是可移植的,但有时支持这些模块的二进制文件不是,当你尝试使用为一个平台构建的库时,你会得到这样的错误/另一个平台/版本上的版本。
您需要为当前系统重新安装XML::LibXML
Perl发行版。根据为系统安装错误二进制文件的方式,您可能还需要为其他几个发行版执行此操作。
但在您这样做之前,您可能希望升级您的Perl版本。 Perl 5.8很古老,即使按照Perl 5.8的标准,Perl 5.8.0仍然很老。
(运行cpan XML::LibXML
应该为您重新安装该发行版)