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

2023-12-11

我正在使用 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(使用前将#替换为@)

检测编译后的perl脚本是否动态加载模块 的相关文章

  • 多维哈希排序 - Perl [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我真的需要一些帮助来理解这个哈希并对
  • Perl - 以相反的顺序逐行读取文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Perl 中从文件末尾读取行 https stackoverflow com questions 303053 how can i read lines from the end of fil
  • 将所有代码放入 C++ 头文件中的优点和缺点?

    您可以构造一个 C 程序 以便 几乎 所有代码都驻留在头文件中 它本质上看起来像一个 C 或 Java 程序 但是 您至少需要一个 cppfile 来在编译时拉入所有头文件 现在我知道有些人绝对会讨厌这个想法 但我还没有发现这样做有任何令人
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 迭代哈希数组

    我编写了下面的例程 迭代哈希值 0 7 并打印出每个哈希值中特定键的值 我需要获取每个哈希中 b4 的值 我想取消 0 7 当存在不同数量的哈希值时使用更智能的东西 例如 有时只有 2 个 也可能有 160 个 my out decode
  • unix df 上的正则表达式帮助

    我需要一些帮助来调整我的代码以查找此 UNIX 中的另一个属性df output Ex Filesystem Size Used Avail Capacity Mounted on dev ad4s1e 61G 46G 9 7G 83 ho
  • 如何以编程方式构建 Visual Studio 解决方案?

    我想通过传递解决方案文件路径 sln 文件 和构建模式 调试 发布 来编译解决方案 我不想调用像 devenv exe 或 msbuild exe 这样的命令行进程 相反 我想使用 API 并了解是否存在编译错误 是否可以 如果您认为您知道
  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • 为什么我只得到第一个捕获组?

    https stackoverflow com a 2304626 6607497 https stackoverflow com a 2304626 6607497 and https stackoverflow com a 370042
  • grep 通过彩色文本,例如海湾合作委员会 |颜色gcc | grep 正则表达式

    在 grep 管道输出时 如何使 grep 尊重 ANSI 颜色转义 我很高兴使用其他东西 perl 而不是 grep 我的用户案例 我想要 gcc foobar c colorgcc grep regexp ls color grep f
  • 将 HTML 转换为 Excel 的最佳方法是什么

    我有一个 HTML 页面 其中包含 Flash 图表 FusionCharts 和 HTML 表格 我需要将这整个事情转换成Excel HTML 表格应显示在 Excel 工作表的单元格中 Flash 图表可以显示为图像 我们可以使用任何开
  • Perl 的 caller() 函数返回错误的行号

    我在 Perl 5 10 1 上运行了以下脚本 usr bin perl use strict use warnings foreach my x 0 x lt 1 x Line 5 print line Line 6 sub print
  • 我应该将Python的pyc文件添加到.dockerignore吗?

    我见过几个例子 dockerignorePython 项目的文件 其中 pyc文件和 或 pycache 文件夹被忽略 pycache pyc 由于无论如何这些文件 文件夹都会在容器中重新创建 我想知道这样做是否是一个好习惯 是的 这是一个
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • 打包 Perl 应用程序,以便它可以在 Perl 的默认前缀之外工作

    我正在使用 Module Build 尽管我在构建环境上很灵活 来打包我正在编写的一些 Perl 软件 供我工作的内部使用 它包括一些脚本和一些辅助模块 我的计划是这样你就可以指定任何你想要的前缀 即perl默认值之外的东西 INC 在构建
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 是否有理由在 Perl 中使用 open(...) 的双参数形式?

    是否有任何理由使用双参数形式open 在 Perl 中而不是三个或更多参数的版本 我能想到的唯一原因是明显的观察结果 即两个参数的形式更短 但是假设冗长不是问题 是否有任何其他原因会让您选择双参数形式open 一参数和二参数 open 应用
  • 当值相同时,为什么我的值比较返回 false?

    我有一个 perl 脚本 可以将 Excel XLS 文件中的数据加载到数据库中 首先 它检查文件中的值的日期时间是否已存在于数据库中 如果是 它会检查文件中的值是否与数据库中的值相同 如果它们相同 则跳过该值 如果不同 则更新数据库中的值
  • 在调试或发布控制台应用程序中创建文件夹

    我在 vs2010 C 中有一个控制台应用程序 在项目中 我添加了一个文件夹 右键单击项目 添加 gt 文件夹 我希望在编译应用程序 调试或发布 时 然后该文件夹将在调试或发布目录中创建 如果不存在 那可能吗 控制台应用程序是一个守护程序

随机推荐

  • 如何在C中读取或捕获Ctrl+某个键或Alt+某个键?

    For example I want to do some thing when some combination of Ctrl key with any other key is pressed or it may be Alt key
  • 忽略 TextField SwiftUI 组合中输入中的左侧空格

    我正在传递给 TextField 发布的变量 TextField First name text state firstName 我想控制估算 如果从左侧输入 则忽略空格 我可以在哪里以及如何做 可以使用代理绑定来完成 如下所示 TextF
  • 在 Mercurial 中指定编辑器

    一般来说 如果我有一个 W 类型的自定义文件 并且想要使用自定义应用程序 编辑器 X 打开 查看它 当我想要编辑 查看该文件时 如何设置 Hg 来调用应用程序 X 具体示例 我使用 TortoiseHg 来跟踪一组文件 这些文件是由自定义应
  • 可以观察到分组和去抖动吗?

    我有一个可观察的对象 它发出一个包含一些参数的对象 在对象中 参数之一 称为optionId 明确标识一个选项 我想消除该发射的所有实例 然而 如果一个新的optionId出现 我想启动一个新的时钟 并开始一个新的反跳 这是我正在寻找的示例
  • 如何在 Swift 中创建自定义 getter 方法?

    我正在尝试使用以下代码为我的属性创建自定义设置方法 var myProperty String get if CONDITION1 return CONDITION1 STRING else if CONDITION2 return CON
  • “adb install”返回错误:协议错误(无状态)

    我已经创建并运行了几个 Android 模拟器 现在我想在它们上安装应用程序 这是我多次尝试的故事 adb s emulator 5562 install xxx apk daemon not running starting it now
  • 标题大写

    我正在尝试编写一种将标题大写的方法 它不应将每个单词都大写 而应仅将大单词大写 如果您愿意的话 有时 它必须将每个单词大写 也许我需要为这些小词添加一个例外 这是 Ruby 教程的一部分 我无法使用 Railstitleize方法 这是我到
  • R - 使用 par() 创建 ggplot 绘图网格 - 未按预期工作[重复]

    这个问题在这里已经有答案了 我有一些数据看起来像这样 Generate example data exampleData lt data frame Month sample 1 5 500 replace T Product sample
  • WPF 和 NotifyPropertyChanged 来自不同的线程

    我对 WPF 非常有经验 但有一件事困扰着我 我正在使用 ReactiveUI 引发 INotifyPropertyChanged 事件 我有两个类似的地方 public UiModel UiModel get return uiModel
  • 使用 Odeint 求解复矩阵微分方程

    我想求解矩阵微分方程 像这个 import numpy as np from scipy integrate import odeint def deriv A t Ab return np dot Ab A Ab np array 0 2
  • 使用c#读取Word文档

    我需要从一个特定的点开始阅读word文档 该关键字取自下拉组合框 关键字类似于 blah blah blah 001 所以 我只需要阅读从该关键字到下一个标题的内容 我用它来逐行读取标题编号 但标题编号不起作用 string headNum
  • C++ 睡眠函数

    我正在尝试执行一个有点准确的睡眠功能 我测量了我的睡眠功能睡了多长时间 并将它们并排放置 下面示例的格式为 预期毫秒 结果毫秒 我尝试了很多选择 但仍然找不到解决方案 以下是我尝试过的路线 Route 1 Sleep
  • 合并子目录中的 git 存储库

    我想将远程 git 存储库合并到我的工作 git 存储库中作为它的子目录 我希望生成的存储库包含两个存储库的合并历史记录 并且合并存储库的每个文件都保留其历史记录 就像在远程存储库中一样 我尝试使用子树策略 如中提到的如何使用子树合并策略
  • 致命错误:c:\wamp\www\drupal2\includes\common.inc 第 551 行超出最大执行时间 30 秒

    当我进入 drupal 6 中的管理选项时 我的浏览器上出现以下错误 致命错误 超过了最大执行时间 30 秒 c wamp www drupal2 includes common inc 第 551 行 我在 drupal 6 站点 所有
  • jQuery 在 div 标签内添加图像

    我有一个 div 标签 div Where is the image div 我想在 div 内添加一个图像标签 最终结果 div img src theImg png Where is the image div 您是否尝试过以下操作 t
  • LibGdx 2 半屏“按钮”

    Android 所以我是 LibGdx 的新手 我正在尝试编写这个 chrome 恐龙迷你游戏 我想在用户触摸屏幕左侧时执行操作 1 并在触摸屏幕右侧时执行操作 2手边的屏幕 我该怎么办 您可以通过在游戏循环中的某处使用以下代码来检测被触摸
  • cs50的tideman lock_paiors函数问题

    大家好 我的 pset3 上的锁对功能有问题 tideman 希望得到一些反馈 bool checkcycle int from int to if from to return true int i for i 0 i lt candid
  • IIS 6.0 中是否有相当于 Apache 的 auto_prepend_file 的功能

    在 LAMP 堆栈上我可以使用 gt php value auto prepend file bootstrap php 在 htaccess 中引导一系列我想在处理任何页面之前执行的命令 是否可以在 IIS 6 0 中执行相同的操作 更新
  • Java 正则表达式转大写

    所以我有一个像这样的字符串 2000cc 车辆翻新发动机 我想把它变成 2000CC 车辆翻新发动机 2000CC 上的大写字母为 cc 我显然做不到text replaceAll cc CC 因为它将用大写版本替换所有出现的 cc 因此单
  • 检测编译后的perl脚本是否动态加载模块

    我正在使用 Strawberry Perl 运行 Windows 10 我用PAR 打包机模块来制作我的一些 Perl 脚本的可执行版本 我发现有些模块例如XML LibXML 需要安装 Perl 才能运行可执行文件 由于我是为没有 Per