如何调试PAR Packer符号解析?

时间:2012-02-16 17:03:42

标签: perl pp-perl-par-packager

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

pp -c -o script 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

包装中也包含哪些内容。

如何解决/调试此问题?

1 个答案:

答案 0 :(得分:0)

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

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

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