首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载“/Compress/Raw/Zlib/Zlib.so”

无法加载“/Compress/Raw/Zlib/Zlib.so”
EN

Stack Overflow用户
提问于 2012-04-28 10:03:37
回答 1查看 5.5K关注 0票数 2

我正在尝试运行Variant effect predictor perl脚本(通过ensembl),我得到了这个错误:

代码语言:javascript
复制
Testing VEP script
ERROR: Testing VEP script failed with the following error
Can't load '/home/sahel/perl5/lib/perl5/x86_64-linux/auto/Compress/Raw/Zlib/Zlib.so' for module Compress::Raw::Zlib: /home/sahel/perl5/lib/perl5/x86_64-linux/auto/Compress/Raw/Zlib/Zlib.so: undefined symbol: PL_unitcheckav at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11
Compilation failed in require at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11.
BEGIN failed--compilation aborted at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/ProteinFunctionPredictionMatrix.pm line 73.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/ProteinFunctionPredictionMatrix.pm line 73.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariationAllele.pm line 65.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariationAllele.pm line 65.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariation.pm line 57.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariation.pm line 57.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/DBSQL/TranscriptVariationAdaptor.pm line 68.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/DBSQL/TranscriptVariationAdaptor.pm line 68.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/VariationFeature.pm line 105.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/VariationFeature.pm line 105.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/Utils/VEP.pm line 52.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/Utils/VEP.pm line 52.
Compilation failed in require at variant_effect_predictor.pl line 57.
BEGIN failed--compilation aborted at variant_effect_predictor.pl line 57.

我已经通过cpan安装了所有必需的模块,并通过以下方式设置了模块的路径:

代码语言:javascript
复制
echo 'eval `/projects/sahel_proj/localperl/bin/perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile

Compress::Raw::Zlib和Compress::Zlib似乎已成功安装:

代码语言:javascript
复制
./bin/perl -e 'use Compress::Raw::Zlib;'
./bin/perl -e 'use Compress::Zlib;'

所以我想不出哪里出了问题,在网上也找不到任何东西…

这是我第一次使用perl的经验:(,任何帮助都将不胜感激……

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-28 15:57:58

似乎存在Perl版本不匹配。这些迹象表明:您正在加载的.so是使用Perl的一个版本构建的,并且它是由不兼容的Perl版本加载的。

我怀疑您的测试是用一个perl (用于安装模块的那个)完成的,而实际的程序是用另一个perl运行的。

现在你知道为什么我不能理解为什么人们认为INSTALL_BASE,也就是--install_base是个好主意了。当然,目录结构更漂亮,但它会导致这些问题!你正在通过INSTALL_BASE::lib使用本地,也就是--install_base (一种告诉Makefile.PLBuild.PL在哪里安装模块的方法)。

解决方案1。

使用安装模块时使用的perl运行脚本。

解决方案2。

删除local::lib安装模块的目录,不使用local::lib:

代码语言:javascript
复制
perl Makefile.PL PREFIX=~ LIB=~/lib/perl5
make
make test
make install

代码语言:javascript
复制
perl Build.PL --prefix ~ --lib ~/lib/perl5
./Build
./Build test
./Build install

如果使用两个perl执行上述操作,则两个perl都可以使用特定于版本的模块。如果您仅使用一个perl执行上述操作,则特定于版本的模块将仅对该perl可用。没有冲突。

(您可以通过将cpan配置为使用上述命令来使用它。)

别忘了告诉perl你的模块在哪里。在您登录脚本中,

代码语言:javascript
复制
export PERL5LIB=~/lib/perl5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10359979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档