我正在使用Strawberry Perl运行Windows 10。我使用PAR :: Packer模块来制作某些Perl脚本的可执行版本。
我发现某些模块(例如XML :: LibXML)需要安装Perl才能运行可执行文件。由于我是在没有Perl的情况下为用户编译这些代码的,因此无法达到编译目的。
我有什么办法可以在编译前告诉可执行文件是否需要运行Perl?
假设您想知道,如果您的pp打包可执行文件将在未安装perl的系统上运行,请执行以下操作:
从sysinternals.com获取Process Explorer。
打包可执行文件。
运行可执行文件,并检查过程中的动态链接库中ProcessExplorer
(查看- >“显示下窗格”和视图- >“下面的窗格视图” - >“的DLL”),
如果你看到任何DLL指的不是PAR温度之外的路径任何Windows系统上都存在的-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 ...
Process Explorer将显示:
libxml2-2_.dll ... C:\Users\user\AppData\Local\Temp\par-xxx\cache-SHA1\libxml2-2_.dll
现在,该过程将拾取与pp捆绑在一起的库,并将其提取到PARs cache-dir中。
克里斯,干杯
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句