2017-03-29 17 views
0

그래서 여기 PERL : 나는 내 스크립트에 바로 "사용 JSON : RPC : 클라이언트"를 추가하지만 그것을 사용하지 않을 때는 내가 주석을 해제 할 때 나는 ...

내 스크립트의 수입 라인 인 오류 JSON :: RPC 줄 아래에 나열된 오류가 발생합니다.

perl -MStorable -wle'print $ARGV[0]->VERSION' Storable 
2.30 

펄에 : 펄 5.10 상자에서

/usr/bin/perl: symbol lookup error: /usr/local/lib64/perl5/auto/Storable/Storable.so: undefined symbol: Perl_Istack_sp_ptr 

- 나는

#!/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; 

아래에 나열된 오류에도 스크립트 라이브러리를 사용하여 여전히 얻을 아니에요 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 
+3

최근에 Perl 버전을 변경했거나 다른 버전의 perl을 갖고 있습니까? http://stackoverflow.com/questions/6256633/how-can-you-determine-what-perl-module-is-causing-undefined -symbol-perl-tstack은 여러분이 사용하려고하는 다른 버전으로 컴파일 된 라이브러리를 가지고 있다고 제안합니다. – scrappedcola

+0

더 많은 문제 해결 정보가있는 업데이트 된 게시물 – BostonMacOSX

+2

5.10에서 모듈을 컴파일 한 것처럼 보이고 5.16에서 사용하려고합니다. 5.16을 위해 다시 빌드해야합니다. – scrappedcola

답변

0

(나는 찾을 수 없습니다. 모듈은 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에 없기 때문에 소스 코드가 어디에 있는지 알기를 바랍니다.