【问题标题】:Execution of Perl Script XS module [closed]Perl Script XS模块的执行[关闭]
【发布时间】:2020-07-14 01:20:01
【问题描述】:

我正在尝试运行我的 Perl 脚本,但出现以下错误:/home/nippyi8v/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Class/Load/XS/XS.so: undefined符号:Perl_Tstack_sp_ptr

Perl 安装版本的一些问题 - 有人可以帮忙。谢谢

【问题讨论】:

    标签: perl installation version execution xs


    【解决方案1】:

    您尝试加载的模块是由与您正在使用的版本不同的 Perl 版本安装的。

    您可能正在使用 local::lib 在您的主目录中安装模块。 local::lib 导致使用标准模块安装程序的“安装库”选项。不幸的是,虽然指定“安装库”可用于在您的主目录中安装模块,但这样做的方式是假设您只使用过一个 perl[1]

    假设您只使用一个 perl 并且它最近已更新,您可以通过删除 ~/perl5[2] 并重新安装您在本地安装的模块来解决您的问题。


    如果您有多个 Perl 版本,或者您不想在下次升级 Perl 时遇到这个问题怎么办?

    有一些方法可以告诉安装程序在您的主目录中安装模块,这样多个版本的 Perl 可以共享安装目录,[3],但它并没有真正起作用。 [4]

    这就是为什么我使用perlbrew 在我的主目录中安装 Perl 本身,这样我就不必覆盖模块的安装位置。使用perlbrew 有以下好处:

    • 您可以轻松安装多个 Perl 版本。
    • 您可以随时升级 Perl,而不依赖于操作系统更新。
    • 在切换到“永久”使用之前,您可以使用更新版本的 Perl 测试脚本和模块。
    • 您可以使用旧版本的 Perl 测试脚本和模块。

    1. 啊!为什么这是 local::lib 使用的默认值?!
    2. 好吧,重命名它直到你确定你已经完成了它。
    3. 使用“prefix”和“lib”选项而不是“install base”。
    4. 当纯 Perl 模块依赖于 XS 模块时,您会遇到问题。好的,这就是 local::lib 不采用这种方法的原因。

    【讨论】:

    • 谢谢...找到两个 Perl 安装...我卸载了 Class::Load::XS 模块并重新安装,脚本已经开始工作...。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2011-04-09
    • 2015-12-06
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多