【问题标题】:PERL: When I add just the "use JSON::RPC::Client" to my script but not use it I get an errorPERL:当我只将“使用 JSON::RPC::Client”添加到我的脚本但不使用它时,我得到一个错误
【发布时间】:2017-08-23 02:58:44
【问题描述】:

所以

这是我脚本的导入行...当我取消注释 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

【问题讨论】:

  • 您最近是否更改过 Perl 的版本,或者您有不同版本的 perl:stackoverflow.com/questions/6256633/… 建议您有一个使用不同版本编译的库。
  • 更新帖子,提供更多故障排除信息
  • 所以看起来您在 5.10 上编译了模块并试图在 5.16 上使用它。您需要为 5.16 重建它。

标签: json perl json-rpc


【解决方案1】:

(我在 CPAN 上找不到名为 JSON::RPC::Client 的模块,所以有些是猜测。模块来自哪里?)

当您取消注释 use 行时出现这些错误的原因是 Perl 会尝试加载库。而且加载失败了。

看起来你的库有一个 XS 组件。也就是说,它不是用 Pure Perl 编写的。其中一部分是一个 Perl 包装器,它围绕着一个用另一种语言(可能是 C)编写的库。

Perl 保证为给定的 Perl 主要版本(在本例中为 5.10)编写的 XS 库将适用于同一主要版本号(因此任何 5.10.x)下的所有次要版本。但是主要版本通常会破坏二进制兼容性。为 Perl 5.10.x 构建的 XS 模块通常不适用于 Perl 5.16.x。

解决方案是为新版本的 Perl 重新构建模块。我希望你知道源代码在哪里,因为(正如我之前提到的)它不在 CPAN 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多