gpt4 book ai didi

perl - 如何将 perl 库与我的跨平台脚​​本捆绑在一起?

转载 作者:行者123 更新时间:2023-12-05 00:49:38 25 4
gpt4 key购买 nike

我用 Perl 开发了一个脚本,它使用了 2 个额外的库,Net::SSH::PerlSpreadsheet::WriteExcel ,我在我的 Debian 笔记本电脑上使用 CPAN 轻松安装了它。

最终,我的目标是在 solaris 服务器上部署此脚本。但是,此服务器未连接到互联网,因此无法自动安装缺少的依赖项。

到目前为止,我尝试使用 PP ,这让我可以在另一台 Ubuntu 计算机上运行这个脚本,而无需手动安装额外的库,但返回了一个错误:Cannot find/lib64/ld-linux-x86-64.so.2 on索拉里斯。

因为我怀疑这是由于两种架构之间的差异,所以我将我的脚本打包到一个包含所有依赖项的 ./lib 文件夹中(获得了 ./lib通过执行 pp -B -p -o script.par myscript.pl 并提取生成的 ./lib 文件夹)。

根据我在 this question 中找到的线索,我尝试在脚本开头使用 use lib "./libBEGIN { unshift @INC, "lib"; } ,但我收到一条错误消息我在运行时没有包含我的库。

有没有办法移植这些库?还有其他方法吗?

最佳答案

Net::SSH::Perl依赖于几个 XS 模块,例如 Math::GMP , Math::Pari和别的。没有办法在 Solaris 机器上实际编译它们(就像用 C 编译它们,而不是 Perl)。

您还需要底层 C 库(即 libgmp、libpari)。 Math::Pari 构建脚本将下载其库,但您已指出这在您的目标 Solaris 机器上是不可能的。

cpanm可以帮助您下​​载 Perl 依赖项,为将它们移动到目标机器并在其上构建它们做准备。

如果您在项目的 Makefile.PLcpanfile 中有正确的依赖项,则运行

cpanm --installdeps  -L deps --save-dists dists .

在您的开发机器上,您的项目目录(注意尾随点)会将其所有依赖项下载到 dists 目录中。

然后您可以将该目录复制到您的目标 Solaris 机器(与 cpanm 一起)并使用其 --mirror 将其传递给 cpanm选项。

例如,我只是为 Net::SSH::Perl 的依赖项做了这个:

cpanm --installdeps -L deps --save-dists dists Net::SSH::Perl

它下载并安装了 34 个发行版到 deps 中,将存档保存在 dists 中。

我可以通过以下方式使用下载的发行版构建 Net::SSH::Perl:

cpanm --mirror file://${PWD}/dists  Net::SSH::Perl

请注意,虽然 cpanm 很方便,但您实际上并不需要它来安装所需的模块。您可以通过解压缩然后运行来手动安装它们(以正确的顺序)

perl Makefile.PL
make
make install

perl Build.PL
./Build
./Build install

适合特定模块

关于perl - 如何将 perl 库与我的跨平台脚​​本捆绑在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24266468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com