为什么Perl的Class :: XSAccessor不能找到Array.so?

时间:2009-06-21 17:09:00

标签: perl

这是我的第一篇文章,我希望有人可以指出我正确的方向。我曾尝试过谷歌,但我没想出任何东西;实际上,几乎没有任何命中,所以我认为这将是一个相当模糊的错误。

我正在尝试在Solaris 10上运行perl应用程序(squeezecenter-7.3.3)并收到以下错误:

  

“ld.so.1:perl:fatal:relocation error:file /opt/squeezecenter-7.3.3/CPAN/arch/5.10.0/i86pc-solaris/auto/Class/XSAccessor/Array/Array.so :symbol get_next_arrayindex:未找到引用的符号“

ld.so.1在搜索路径中,但我无法弄清楚what-ld.so.1或Array.so-是否导致错误。任何帮助将不胜感激。

由于

2 个答案:

答案 0 :(得分:7)

最新更新2009-12-04

当前版本的Class :: XSAccessor包含Class :: XSAccessor本身和Class :: XSAccessor :: Array。它不再使用AutoXS.pm来生成AutoXS.h,而是发送静态副本。因此,不应再出现引起问题的问题。


虽然克里斯西蒙斯的想法很好,但这肯定不是你遇到的问题。您使用的Class::XSAccessor::Array版本与其编译的AutoXS::Header版本之间很可能不兼容。

实际保证*修复将从CPAN重新安装Class :: XSAccessor。它应该选择兼容版本的AutoXS :: Header。也许您还应该在SlimDevices / Logitech论坛上发布此事。

更一般地说,作为两个模块的作者,我不确定为什么这个问题正在发生。 AutoXS :: Header版本1.02的依赖是最新的Class :: XSAccessor :: Array版本的一部分。因此,如果正确地满足依赖性,一切都应该没问题。 SqueezeCenter人员如何更新其捆绑模块可能具有一些特殊性。如果没有,请随时与我联系。

*剩下的一个问题可能是SqueezeCenter附带的Class :: XSAccessor :: Array优先于从CPAN安装的那个(可能进入系统)。在这种情况下,您可以尝试将其安装到/opt/squeezecenter.../CPAN目录中。

答案 1 :(得分:3)

重新安装违规模块。以root身份运行:

cpan -i Class::XSAccessor::Array Class::XSAccessor

或手动安装it