尝试运行perl脚本时出现以下错误。
Can't load '/oatss/oatss-prod/lib/WatchDogErrs.so' for module WatchDogErrs: /oatss/oatss-prod/lib/WatchDogErrs.so: wrong ELF class: ELFCLASS32 at /usr/lib64/perl5/DynaLoader.pm line 200.
这个.so文件是如何从.pm文件创建的,问题出在哪里。
答案 0 :(得分:1)
.so
不是从.pm
文件创建的,它是在Perl模块构建过程中从.xs
文件创建的(例如make
之后{ {1}})。它是一个集成到Perl中的C代码库。这些库是架构和Perl主要版本特定的。
DynaLoader.pm是将C代码加载到Perl中的两个主要模块之一(XSLoader.pm是另一个)。
在这种情况下,似乎有人使用32位Perl编译WatchDogErrs并将其安装在perl Makefile.PL
中。您正尝试将其与64位Perl一起使用。那不行。您需要使用与用于编译WatchDogErrs.so的32位Perl兼容,或者使用您想要使用的Perl重新编译它(并将其安装在其他地方,或者您将破坏使用32的脚本) -bit Perl)。