我正在使用Strawberry Perl运行Windows 10。我使用 PAR :: Packer 模块制作一些Perl脚本的可执行版本。
我发现一些模块,例如 XML :: LibXML ,需要安装Perl才能运行可执行文件。由于我是在没有Perl的情况下为用户编译这些文件,因此这违反了编译的目的。
在编译之前,有什么方法可以告诉我该可执行文件是否需要运行Perl?
答案 0 :(得分:2)
假设您想知道,如果您的pp打包可执行文件将在未安装perl的系统上运行,请按以下步骤操作:
从sysinternals.com获取Process Explorer。
打包可执行文件。
运行可执行文件并在ProcessExplorer中检查进程的dll
(视图->“显示下部窗格”和视图->“下部窗格视图”->“ DLL”)
如果您看到任何dll都指向Windows系统中存在的PAR temp-dir或系统库以外的其他路径,请返回,再次打包并使用pp的-l开关添加这些库。
示例:
pp -e "use XML::LibXML; while(1){sleep 1}"
运行a.exe ... 流程浏览器显示:
libxml2-2_.dll ... C:\Users\user\perl522\c\bin\libxml2-2_.dll
这将不会出现在用户系统上...
重新运行pp:
pp -l libxml2-2_.dll -e "use XML::LibXML; while(1){sleep 1}"
运行a.exe ... 流程浏览器显示:
libxml2-2_.dll ... C:\Users\user\AppData\Local\Temp\par-xxx\cache-SHA1\libxml2-2_.dll
现在,该过程将拾取与pp捆绑在一起的库,并将其提取到PARs cache-dir。
干杯,克里斯