3

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

有人能解释一下如何用这台 Windows 机器上的所有依赖包构建一个 Perl 脚本来创建一个在Linux机器上运行的独立文件吗?

4

1 回答 1

3

从 Windows 机器开始生成在 Linux 机器上运行的二进制文件不可能



您使用pp (from 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 机器开始生成在 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。

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

于 2016-04-08T10:43:32.570 回答