2009-08-07 3 views
6

Perl XS를 사용하여 Perl로 변환하는 C++ 객체가 있습니다. 이 프로세스는 Perl 5.8.5 및 5.8.7에서 잘 작동합니다. 하지만 Perl 5.10.0을 사용하자마자 많은 컴파일 오류가 발생합니다. 대부분은 다음과 같습니다.XS를 Perl 5.10으로 컴파일 할 때 "정의되지 않은 참조"오류가 발생하는 이유는 무엇입니까?

 
undefined reference to 'PL_stack_max' 
undefined reference to 'PL_stack_sp' 
undefined reference to 'Perl_sv_2pv_flags' 
undefined reference to 'Perl_sv_setref_pv' 

이렇게하면 Perl XS 항목이 제대로 링크되지 않은 것입니다. 5.8.5에서 v5.8.7로 갔을 때 버전을 변경하고 다시 작성해야했습니다.

팁이 있습니까?

답변

7

5.10.0으로 옮겼을 때 XS 확장 프로그램을 다시 컴파일 했습니까?

Perl 5.10.0을 (를) 빌드했을 때 이전 버전과의 호환성을 유지하도록 설정 했습니까? (심지어 이전 버전과의 호환성을 구축하려고 시도한 적이 없기 때문에 옵션이 아닌지 확신 할 수 없습니다. @Ysth는 그렇지 않다고 생각합니다.)

작업 할 때 비슷한 문제가 발생했습니다. Perl의 주 버전 사이에 있지만, 문제의 원인을 정확하게 확신하기에는 아직 충분하지 않습니다. 그러나 설정 과정이 끝날 무렵, XS 확장과 호환이 가능한 Perl의 이전 버전에 관한 질문이 있다는 것을 기억하는 것 같습니다.

+0

perl 5.10.0은 5.8.x와 이진 하위 호환성을 가질 수 없습니다. – ysth

+0

@Ysth : 그렇게 말하면. 구성 질문을 본 기억이 있지만 그 질문이 5.10.0과 함께 왔는지는 기억하지 못합니다. 필자는 Perl 5.10.0을 올해에 두세 번 밖에 만들지 않았으며, 이전 버전과의 호환성을 절대로 찾지 못했기 때문에 많은주의를 기울이지 않았습니다. 기본값은 '아니요'입니다. –

+0

하지만이 경우에는 5.10.0을 사용하여 다시 컴파일하려고합니다. 5.10.5와 5.8.5로 컴파일 된 것을 사용하지 마십시오 – shergill

2

64 비트 시스템에서 32 비트 Perl 5.10.0을 사용하고있었습니다. . 문제 해결됨! 응답 한 모든 사람들에게 감사드립니다.

관련 문제