如何打包带有Windows所有依赖项的perl脚本在linux机器上运行?

时间:2016-04-08 09:53:28

标签: perl par perl-packager

我使用pp PAR :: Packer构建一个独立的exe文件,以便在Windows机器上运行。

有人可以解释如何使用此Windows计算机上的所有依赖包构建Perl脚本,以创建要在 Linux 计算机上运行的独立文件吗?

1 个答案:

答案 0 :(得分:2)

您使用pp(来自PAR-Packer)命令可能与您在Windows中使用的方式相同

pp -S -M Some::Module -M Some::Other::Module -o youBinary.bin Script1.pl Script2.pl ScriptN.pl

注意事项:

  • -M标志可能是必要的,因为有时自动查找依赖项可能不起作用(其中一些是在运行时动态加载的,所以它有点试验和错误,直到你获得良好的组合)。在执行pp
  • 时看到类似这些警告时要特别小心
Use of runtime loader module Module::Runtime detected.  Results of static scanning may be incomplete.
Use of runtime loader module Module::Implementation detected.  Results of static scanning may be incomplete.
  • 将多个脚本打包成一个二进制文件的可能性。您可以创建指向该二进制文件的不同符号链接以执行不同的脚本。

      

    如果指定了单个输入程序,则生成的可执行文件的行为与该程序相同。但是,当打包多个程序时,生成的可执行文件将运行与$ 0具有相同基本名称的程序(即用于调用它的文件名)。如果没有匹配,它就会因错误而消失"无法打开perl脚本" $ 0"

    不时非常方便。

还要注意在具有"较旧"的计算机上创建二进制文件。 libc中。如果你在一个前沿的Linux上做这件事,你将需要一个前沿的Linux来运行它,使它不那么便携。

  

请注意,即使您的perl是使用共享库构建的,也可以使用'独立可执行文件'上面不需要单独的perl5x.dll或libperl.so才能正常运行。但即使在这种情况下,诸如libc之类的底层系统库也必须在主机和目标机器之间兼容。

享受独立的Perl二进制文件。

<强> 修改

从Windows计算机is not possible开始生成在Linux计算机上运行的二进制文件。

  

Perl Packager脚本说它可以创建在同一个操作系统中运行的可执行文件。我可以用它来用linux机器创建Win32二进制文件吗?或者我应该使用什么来从我的脚本在Linux上创建Win32可执行二进制文件?

     

无法为不同的平台创建独立的二进制文件,而不是您当前运行的二进制文件。这是一个通常很难的问题,因为您必须交叉编译所有XS模块和perl本身。不太好。

     

例如,如果您想在Linux上开发一个应用程序并将其运送到Linux / x86和Win32 / x86,那么它可以很好地设置一个带有Windows(XP或2000或其他)的虚拟机和一个Perl安装。在该计算机上,使用PAR / pp打包Win32的应用程序。

     

我可以在哪些平台上运行PAR?生成的可执行文件将在哪些平台上运行?

     

Win32(95/98 / ME / NT4 / 2K / XP),FreeBSD,Linux,AIX,Solaris,Darwin和Cygwin。

     

生成的可执行文件将在支持生成平台二进制格式的任何平台上运行。