检测编译的Perl脚本是否动态加载模块

韦斯

我正在使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检测脚本是否源于“ / bin / sh”

如何检测脚本是否源

当脚本是从加载的脚本动态创建的DOM节点时,脚本的onload和window.onload的顺序是否正确定义?

检测 NODE.JS 脚本是通过 bash (unix) / cmd (windows) 直接调用还是导入(ESM 模块加载器)

在 perl 中动态加载模块

如何检测脚本是否在虚拟机上运行?

检测脚本是否从Racket的命令行执行?

如何检测Ruby脚本是否通过外壳管道运行?

如何检测脚本是否正在使用npm或yarn运行?

检测Tcl脚本是否在后台进程中运行

Lua中检测脚本是否被导入或执行

Python的sh模块-脚本是否可以请求输入?

Angular-动态模块加载和编译

检查Bootstrap Datepicker脚本是否已加载

检测文本是否溢出

在加载所有指定模块之前,我是否可以检测到requirejs何时由于用户导航而生成脚本错误?

在c中嵌入了perl-perl_run()执行的脚本是否存在“ runitme错误”标志?

如何检测脚本是否正在浏览器或Node.js中运行?

如何检测我的Shell脚本是否正在通过管道运行?

如何检测asp.net脚本是否已在运行?

如何检测python脚本是否正在作为后台进程运行

检测脚本是否在Azure自动化中运行的正确方法是什么?

考虑到其参数,如何检测 bash 脚本是否已在运行

脚本编译后如何在python中重新加载模块?

是否检测当前脚本是否已更改而没有使用subshell?(并启动新脚本)

编译后的Shell脚本是否更好地提高了性能?

Perl6:如何动态加载类模块?

编写测试以确保Perl脚本加载特定模块

无论如何要告诉Perl脚本是否通过do运行?