我正在使用 Strawberry Perl 运行 Windows 10。我用PAR::打包机模块来制作我的一些 Perl 脚本的可执行版本。
我发现有些模块例如XML::LibXML,需要安装 Perl 才能运行可执行文件。由于我是为没有 Perl 的用户编译这些文件,这违背了编译的目的。
有什么方法可以在编译之前判断可执行文件是否需要 Perl 安装才能运行?
假设您想知道您的 pp 打包的可执行文件是否可以在未安装 perl 的系统上运行,我是这样做的:
从 sysinternals.com 获取 Process Explorer。
打包您的可执行文件。
运行可执行文件并在 Process Explorer 中检查进程的 Dell
(视图->“显示下部窗格” and 视图->“下部窗格视图”->“DLL”)
如果您看到任何 dll 引用 PAR temp-dir 或系统库以外的路径(这些路径存在于任何 Windows 系统上),请返回,再次打包并使用 pp 的 -l 开关添加这些库。
Example:
pp -e "use XML::LibXML; while(1){sleep 1}"
Running a.exe ...
Process Explorer 显示
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 捆绑在一起的 lib 并提取到 PAR 缓存目录。
干杯,克里斯
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)