2009-08-07 108 views
6

我有一个C++对象,我使用Perl XS转换为Perl。这个过程适用于Perl 5.8.5和5.8.7。但只要我尝试使用Perl 5.10.0,就会遇到很多编译错误。他们大多数沿着这些线:当我用Perl 5.10编译XS时,为什么会出现“undefined reference”错误?

 
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版本升级到5.8.7版本时,我只需要更改版本并重新制作。

任何提示?

回答

7

当您移至5.10.0时是否重新编译了XS扩展?

您是否将Perl 5.10.0设置为在构建时保持向后兼容性? (这甚至可能吗?我从来没有试图建立向后兼容性,所以我不能确定它甚至是一个选项,而@Ysth认为它不是。)

我在工作时看到过类似的问题在主要版本的Perl之间,但最近还不足以确定导致问题的原因。但我似乎记得,在配置过程结束的某个地方,有一个关于Perl的哪些先前版本与XS扩展兼容的问题等。

+0

perl 5.10.0不能与5.8.x进行二进制向后兼容。 – ysth 2009-08-09 10:25:44

+0

@Ysth:如果你这么说。我记得看到了配置问题,但我不记得这些问题是否与5.10.0一起出现。今年我只创建了几次Perl 5.10.0,并没有太注意答案,因为我从来没有寻求向后兼容性,默认是'不'。 – 2009-08-09 15:37:23

+0

但在这种情况下,我试图用5.10.0重新编译;不使用5.10.0 – shergill 2009-08-10 14:39:42

2

我在64位机器上使用32位Perl 5.10.0 。问题解决了! 感谢所有回复的人。

相关问题