【问题标题】:Why can't Perl's Class::XSAccessor find Array.so?为什么 Perl 的 Class::XSAccessor 找不到 Array.so?
【发布时间】:2009-06-21 17:09:00
【问题描述】:

这是我的第一篇文章,我希望有人能指出我正确的方向。我尝试过谷歌,但没有提出任何建议;实际上,几乎没有任何命中,所以我认为这将是一个非常模糊的错误。

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

“ld.so.1:perl:致命:重定位错误:文件/opt/squeezecenter-7.3.3/CPAN/arch/5.10.0/i86pc-solaris/auto/Class/XSAccessor/Array/Array.so : 符号 get_next_arrayindex: 未找到引用的符号"

ld.so.1 在搜索路径中,但我不知道是什么——ld.so.1 或 Array.so——导致了错误。任何帮助将不胜感激。

谢谢

【问题讨论】:

  • “perl -V”的输出是什么?也许您正在使用不同的 perl 版本(5.8.x 或其他版本)。

标签: perl


【解决方案1】:

2009 年 12 月 4 日最新更新

当前版本的 Class::XSAccessor 包含 Class::XSAccessor 本身和 Class::XSAccessor::Array。它不再使用 AutoXS.pm 来生成 AutoXS.h,而是提供一个静态副本。因此,引起该问题的问题不应(永远)再次发生。


虽然 Chris Simmons 的想法不错,但这肯定不是您遇到的问题。很可能是您使用的 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 目录中。

【讨论】:

  • 感谢您的快速回复。我也会将它发布在 SlimDevices/Logitech 论坛上,但由于错误消息,最初我不确定这是否纯粹是一个 Squeezecenter 问题。
  • 请不要误会我的意思。我不想被指指点点。这不一定是纯粹的 SqeezeCenter 问题。在我看来确实如此,但如果事实证明并非如此,我将非常乐意与任何人一起修复它。
  • 哦,我绝对没有走错路!老实说,我只是不知道从哪里开始寻找,因为我不知道问题出在 ld.so.1 或 perl 模块上,还是两者都没有。我不太熟悉编译和链接等。
【解决方案2】:

重新安装有问题的模块。以 root 身份运行:

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

或者手动安装it

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2011-05-26
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多