超折腾人的报错
perl: symbol lookup error: perl_modules/lib/auto/GD/GD.so: undefined symbol: Perl_Gthr_key_ptr
题记:用circos画图时莫名的出现这样消除不了的报错,怎么找也找不到原因,现给出解决方法如下
- 咋一看是Perl缺少模块的问题,于是去装Perl的GD模块
https://github.com/lstein/Perl-GD
结果发现装了之后还是和之前一样的,并没有这个GD.so模块 - 仔细阅读官网,出现这一句:
"Fatal error: can't load module GD.so", or "Fatal error: unknown
symbol gdFontSmall" when you try to run a script that uses GD, you may
have problems with dynamic linking. Check whether other
dynamically-linked Perl modules such as POSIX and DB_File run
correctly. If not, then you'll have to link Perl statically, as
described above. Other problems may be fixed by compiling libgd as a
shared library, as described in step (2) of the installation
instructions.
这应该是说明根本就没有这个 GD.so模块,但是我又没有软连接,只有很多Perl5的环境变量,于是去排查Perl5的环境变量
- export PERL5LIB的环境变量有很多,于是去打算注释几个
关键是source ~/.bashrc
之后还是会出现原来的perl_modules/lib/auto/GD/GD.so: undefined symbol: Perl_Gthr_key_ptr
路径,这个我是注释了的,怎么还是调用了呢? - 请教之后发现需要退出登录,才能生效,保留模块完整的不冲突的perl_modules路径
export PERL5LIB=/perl_module/perl_modules/lib:$PERL5LIB
,注释掉conda的自启动,退出远程帐户再登录才生效!!!
跑转录组blast.kegg.process.sh时也出现了这样的Perl 模块报错,同时得到解决。
perl: symbol lookup error: /software/perl_module/perl_modules/lib/auto/GD/GD.so: undefined symbol: Perl_Gthr_key_ptr
blast.kegg.process.sh.e4149563 (END)
总结:在确认已经有完整的Perl模块的时候,并不是缺少模块,而是怀疑环境变量的perlLIB是不是有冲突,注释掉冲突的perlLIB以及conda,退出再生效,可以解决此类问题
网友评论