perl - PAR::Packer 是如何工作的?

标签 perl exe executable

我正在使用 PAR::Packer,这个问题突然出现在我的脑海中。 PAR::Packer 在 Perl 中是如何工作的?它实际上是否将 Perl 脚本编译为 .exe,就像 g++ 将 C++ 源代码编译为 .exe 一样,或者它是否像 Python 中的 py2exe 一样工作,将解释器和脚本打包成 .exe?

最佳答案

为了明确这一点:

  • PAR::Packer 这样的工具不要“编译”你的 Perl 脚本。他们将 perl 解释器与您的源文件和任何需要的模块捆绑到一个大的可执行文件中。当它运行时,原始源代码被提取并提供给封闭的 perl。

    这工作得相当好,但不会提高速度(相反......)。唯一的优点是您可以将程序作为单个(尽管很大)文件分发,而无需依赖。
  • 有一个非常实验性的工具叫做 perlcc它能够将一些 Perl 程序转换为 C 或 Perl 字节码序列化。如the docs把它:

    The code generated in this way is not guaranteed to work. The whole codegen suite (perlcc included) should be considered very experimental. Use for production purposes is strongly discouraged.



    这是因为 Perl 语言不支持静态编译。它需要能够在主执行阶段发生的同一 session 期间在解析某些动态功能期间执行代码。

  • 还有其他商业工具,通常与 PAR::Packer(创建胖可执行文件)属于同一类别。

    摘要:如果您想要一个可执行文件,请使用 PAR::Packer。如果您想要速度,请内联一些 C(或使用 XS)。没有工具可以将所有 Perl 脚本编译成机器码。

    关于perl - PAR::Packer 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238420/

    相关文章:

    vb.net - 运行应用程序的可执行目录?

    windows - 为什么要在可执行文件中重定位(.reloc 部分)?

    regex - 包含 Perl 一行的 Shell 脚本有空白结果

    perl - Selenium /网络驱动程序 : use existing Firefox profile?

    delphi - 减少exe文件

    visual-studio - 用Visual Studio 2010编译后执行exe文件或bat文件

    c# - 在 C# 中创建安全的 .exe 文件

    perl - 将我自己的编译指示添加到旧的 perl sw 的正确方法

    PerlMagick 对 ICO 文件感到窒息?

    python - 如何运行文本文件中包含的可执行文件(exe 的十六进制)