Perl:因错误的ELF类ELFCLASS64而无法加载模块

时间:2014-04-17 23:23:27

标签: perl libxml2

尝试在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?

1 个答案:

答案 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应该为您重新安装该发行版)