PERL:当我刚刚加入了“使用JSON :: RPC ::客户端”我的剧本,但没有使用它,我得到一个错误
问题描述:
所以PERL:当我刚刚加入了“使用JSON :: RPC ::客户端”我的剧本,但没有使用它,我得到一个错误
这里是我的脚本的进口线...当我取消JSON :: RPC行我得到下面列出的错误。我还没有使用的库脚本,仍然可以得到以下
#!/usr/bin/perl -w
use Data::Dumper;
use Mail::MboxParser;
use Mail::MboxParser::Mail;
use Mail::Box::Manager;
use Email::Delete qw[delete_message];
use POSIX;
use Date::Calc qw(:all);
#use JSON::RPC::Client;
use strict;
列出的错误 -
/usr/bin/perl: symbol lookup error: /usr/local/lib64/perl5/auto/Storable/Storable.so: undefined symbol: Perl_Istack_sp_ptr
在Perl 5.10的箱:
perl -MStorable -wle'print $ARGV[0]->VERSION' Storable
2.30
在perl的5.16方块:
perl -MStorable -wle'print $ARGV[0]->VERSION' Storable
perl: symbol lookup error: /usr/local/lib64/perl5/auto/Storable/Storable.so: undefined symbol: Perl_Istack_sp_ptr
答
(我找不到在CPAN上调用JSON :: RPC :: Client模块,所以有些是猜测。 )
当您取消注释use
行时,您会收到这些错误的原因是Perl会尝试加载该库。负载失败。
它看起来像你的图书馆有一个XS组件。也就是说,它不是用Pure Perl编写的。其中一部分是用另一种语言编写的库(可能是C)的Perl包装器。
Perl保证为给定的Perl主版本(在本例中为5.10)编写的XS库适用于同一主要版本号(所有5.10.x)下的所有次版本。但主要版本通常会破坏二进制兼容性。为Perl 5.10.x构建的XS模块通常不适用于Perl 5.16.x.
解决方案是为您的Perl新版本重建模块。我希望你知道源代码的位置,因为(正如我前面提到的)它不在CPAN上。
您最近更改过Perl的版本吗?或者您有不同版本的Perl:http://*.com/questions/6256633/how-can-you-determine-what-perl-module-is-causing-undefined -symbol-perl-tstack表明你有一个使用你试图使用的不同版本编译的lib。 – scrappedcola
更新后的一些更多的故障排除信息 – BostonMacOSX
所以它看起来像你在5.10编译模块,并试图在5.16上使用它。你需要重建5.16。 – scrappedcola