是否有可能构建一个可以在各种平台上运行的可执行Perl程序? 我有一个Perl脚本,我已经用PP-PAR编写了它。我很好奇是否可以在linux和windows上运行一个完全可移植的可执行文件,或者我必须创建两个可执行文件,一个用于linux,一个用于windows。我对使用perlapp或perl2exe的选项不感兴趣,我在这里严格地寻找PAR/pp选项。我也不是在寻找PAR创建一个.PAR文件的能力,而是为OS品种预先部署了一个存根Perl环境。

是否有可能构建一个可以在各种平台上运行的可执行Perl程序? 我有一个Perl脚本,我已经用PP-PAR编写了它。我很好奇是否可以在linux和windows上运行一个完全可移植的可执行文件,或者我必须创建两个可执行文件,一个用于linux,一个用于windows。我对使用perlapp或perl2exe的选项不感兴趣,我在这里严格地寻找PAR/pp选项。我也不是在寻找PAR创建一个.PAR文件的能力,而是为OS品种预先部署了一个存根Perl环境。,perl,executable,par,Perl,Executable,Par,编辑: 对linux系统上构建的二进制文件运行file命令时,会显示该二进制文件的类型如下: % file my_app my_app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped. 这似乎表明它将只在linux系统上运行。不可能构建一个可以在各种平台上运行的可执行文件,因为它们的二进制文件使用

编辑:

对linux系统上构建的二进制文件运行file命令时,会显示该二进制文件的类型如下:

% file my_app
my_app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped.

这似乎表明它将只在linux系统上运行。

不可能构建一个可以在各种平台上运行的可执行文件,因为它们的二进制文件使用不同的格式。

不可能构建一个可以在各种平台上运行的可执行文件,因为它们的二进制文件使用不同的格式二进制文件。

linux和windows可执行文件具有不同的formats@yi_H是的,但是这些格式彼此不兼容吗?是的,这些格式彼此不兼容。linux和windows可执行文件具有不同的formats@yi_H是的,但是这些格式彼此不兼容吗?是的,这些格式彼此不兼容。谢谢,我觉得情况就是这样,但我想我会要求得到一个明确的答案。我假设,由于PAR/pp构建了一个特定于平台的二进制文件,它们在不同的操作系统/平台组合中是不兼容的。我不认为这是完全不可能的,但这将是非常困难的。ELF头将取代PE格式的DOS存根。位置0x3c必须特定于PE格式。从这里开始,将ELF块和PE块交织在一起就有点简单了。我怀疑任何一块砖都不能起到双重作用。这意味着可执行文件的大小将是原来的两倍。@Brad Gilbert,linux如何找到ELF头?它懂体育吗?我不是在反驳你说的话,只是想弄清楚它是如何工作的。ELF头在文件的开头。PE文件在开始时有一个DOS存根。当Windows查看PE文件时,它会忽略存根。Windows将在位置0x3C处查找地址,该位置指向PE头。这意味着PE头可以位于文件中的任何位置。基本上,只要ELF头不干扰0x3C,就有可能。不过,我要说的是,这远远不可行。你可能需要做很多工作,以使其他格式忽略这些块。谢谢,我有点认为是这样的,但我想我会要求得到一个明确的答案。我假设,由于PAR/pp构建了一个特定于平台的二进制文件,它们在不同的操作系统/平台组合中是不兼容的。我不认为这是完全不可能的,但这将是非常困难的。ELF头将取代PE格式的DOS存根。位置0x3c必须特定于PE格式。从这里开始,将ELF块和PE块交织在一起就有点简单了。我怀疑任何一块砖都不能起到双重作用。这意味着可执行文件的大小将是原来的两倍。@Brad Gilbert,linux如何找到ELF头?它懂体育吗?我不是在反驳你说的话,只是想弄清楚它是如何工作的。ELF头在文件的开头。PE文件在开始时有一个DOS存根。当Windows查看PE文件时,它会忽略存根。Windows将在位置0x3C处查找地址,该位置指向PE头。这意味着PE头可以位于文件中的任何位置。基本上,只要ELF头不干扰0x3C,就有可能。不过,我要说的是,这远远不可行。您可能需要进行大量的工作,以便其他格式忽略这些块。