我正在使用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
包装中也包含哪些内容。
如何解决/调试此问题?
答案 0 :(得分:0)
也许这两台机器是如此不同以至于它们需要不同的lib?一个是32位,另一个是64位吗?
如果可以尝试仅使用纯perl脚本,或者您必须将程序打包在同一环境中。
使用虚拟机,在其上安装相同的Linux并在那里创建包。