perl - 为什么 Perl 的 PAR 找不到 Socket.pm 的可加载对象?

标签 perl cpan multiplatform par

我使用 PAR::Packer 在 Cygwin 上打包我的 Perl 应用程序,然后在 HPUX 上运行它。

一个简单的 hello world 运行良好,例如:

pp -p hello.pl

这导致 a.par 然后在 HPUX 上:
parl a.par

它工作得很好。

但是,当使用 -B 捆绑开关打包具有许多依赖项的更大应用程序时,没有这样的运气,而是出现错误:
 Can't locate loadable object for module Socket in @INC

任何想法,也许是 Windows/unix 网络的一些问题?有什么修复吗?

最佳答案

您之所以遇到这个问题,是因为 Socket 加载了一个共享库,并且它不能跨平台移植(也就是说,Windows 上的 Socket 共享库在 Linux 上不起作用,在 HPUX 上不起作用)。

你可以尝试两件事:

  • 确定您需要共享库的所有位置,并在您的目标平台上进行本地安装。您可能还需要从 PAR 存档中排除这些模块。
  • 切换到纯 Perl 实现((更多)可移植的)。如果您不是 Perl、C 和您的目标平台的专家,并且还没有纯 Perl 版本,那么您可能不走运。
  • 关于perl - 为什么 Perl 的 PAR 找不到 Socket.pm 的可加载对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/596173/

    相关文章:

    perl - 如何在 Perl 中解析 XML 并创建树结构

    PERL 如何将本地时间格式转换为 unixtime

    perl - socket->recv() 与 <>?

    java - 将 XML 输入从多行转换为一行

    perl - 是否可以使用 grep 函数过滤文本文件中的实数?

    perl - 无法安装 perl 模块 opensuse 12.2

    Perl on MacOS X 10.6.2 : GDBM_File missing, 如何安装或解决?

    .net - 如何创建支持多平台的 nuget 包

    docker - 需要知道如何使用 Groovy 自动化 Docker 构建和运行时

    android - Android 真的存在于除 ARM 之外的其他平台上吗?