Perl: не удается загрузить модуль из-за неправильного класса ELF ELFCLASS64

Я получаю следующую ошибку при попытке собрать код на 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?


person imagineerThat    schedule 17.04.2014    source источник
comment
Я не знаю, как это работает в unix. Есть ли путь поиска динамически подключаемых библиотек (.so)? Если это так, вам безумно нужно изменить его, чтобы 32-битный libxml2.so находился перед 64-битным.   -  person ikegami    schedule 18.04.2014


Ответы (1)


Библиотека, которую вы не можете загрузить, поддерживает модуль Perl XML::LibXML::Common, а не библиотеку libxml2. Большинство чистых модулей Perl достаточно переносимы для разных версий Perl и даже для разных платформ, но бинарные файлы, которые иногда поддерживают эти модули, — нет, и вы получите подобные ошибки, когда попытаетесь использовать библиотеку, созданную для одной платформы. версия на другой платформе/версии.

Вы захотите переустановить дистрибутив XML::LibXML Perl для вашей текущей системы. В зависимости от того, как были установлены неправильные двоичные файлы для вашей системы, вам может понадобиться сделать это и для нескольких других дистрибутивов.

Но прежде чем вы это сделаете, вы можете обновить свою версию Perl. Perl 5.8 устарел, а Perl 5.8.0 устарел даже по меркам Perl 5.8.

(запуск cpan XML::LibXML должен переустановить этот дистрибутив для вас)

person mob    schedule 18.04.2014
comment
Re Библиотека, которую вы не можете загрузить, [...] не является библиотекой libxml2. На самом деле это так. Common.pm не загружается, потому что Common.so не загружается, потому что libxml2.so не загружается, потому что libxml2.so не является правильным типом двоичного файла. - person ikegami; 18.04.2014
comment
@ikegami - правильно ли предписано (переустановить XML::LibXML)? - person mob; 18.04.2014
comment
Я не знаю. Я не знаю, как система определяет, какой .so загружать. - person ikegami; 18.04.2014