1

我正在使用 PAR Packer (1.012) 打包 perl 脚本以进行分发,如下所示:

pp -c -o 脚本 script.pl

当我将它移动到没有使用各种库的机器上安装脚本时,它会失败并显示以下错误消息:

Can't find 'boot_Compress__Raw__Zlib' symbol in
/tmp/par-root/cache-206d7ce41fbe60d4e890ae3ac7d39bfc7ce2d710/d6103eb0.so
at /usr/share/perl5/Archive/Zip.pm line 12 Compilation failed in
require at /usr/share/perl5/Archive/Zip.pm line 12. BEGIN
failed--compilation aborted at /usr/share/perl5/Archive/Zip.pm line
12. Compilation failed in require at -e line 358.

因此,它似乎缺少包含该符号的 Zlib.so 库。使用 -vv 编译调试可以看到包含了 Zlib:

Written as "auto/Compress/Raw/Zlib/Zlib.so" Packing
"/tmp/par-jag/cache-044524c2d7fff164771e45125a48ca260a890c0c/5f10a097.so"...

我已经确认它是打包的档案。我还检查了它抱怨找不到符号的库:

Written as "auto/IO/IO.so" Packing
"/tmp/par-jag/cache-044524c2d7fff164771e45125a48ca260a890c0c/d6103eb0.so"...

我不知道如何解决这个问题。此外,如果我在目标机器上安装 perl-Compress-Raw-Zlib,我会立即在另一个库上失败。

Can't find 'boot_Term__ReadKey' symbol in
/tmp/par-jag/cache-206d7ce41fbe60d4e890ae3ac7d39bfc7ce2d710/d6103eb0.so

这也包含在包装中。

我该如何解决/调试这个?

4

1 回答 1

0

也许这两台机器是如此不同以至于他们需要不同的库?一个是32位,另一个是64位?

如果可以尝试仅使用纯 perl 脚本,或者您必须将程序打包在相同的环境中。

使用虚拟机,在其上安装相同的 linux 并在那里创建包。

于 2012-02-17T07:51:31.017 回答