1

我在编译我的 perl 脚本时遇到了很多麻烦。我在脚本中使用了各种模块:

use fetchinfo; #which I wrote so it's in the same directory as my script
use threads;
use threads::shared;
use Tk;
use Fcntl ':flock';

并且 fetchinfo.pm 也使用这个模块:

use WWW::Mechanize;
use URI::Escape;
use Date::Calc qw(Delta_Days);
use LWP::Simple;
use HTML::Parser;

我的机器上安装了 ActivePerl(64 位 Win 7)。

我正在尝试编译我的代码并使其成为一个独立的 .exe 文件(尽管能够为其他系统编译也很棒(因为我认为我的代码不使用任何系统特定的功能)。

我不介意安装虚拟机(如果需要 32 位 win 或 linux),我不介意安装 Strawberry perl 而不是 ActivePerl ...我只想能够编译代码 :-)

尝试使用 perl2EXE 它说它找不到一些模块(尽管每个模块都是由 ppm 安装的)。我尝试在 Linux 上使用 Perl Packager (PAR::Packer) 进行编译(因为它没有显示在 ppm 上,而且我无法以任何其他方式安装它)但是创建的文件不起作用。

... 帮助?:-)

4

1 回答 1

0

您是否知道perl2exe所做的只是创建包含所有源文件的 perl 解释器可执行文件的副本(可能处于编译状态,我不确定)?

我建议您改用PAR package它,它将构建一个包含可以从命令行运行的所有必要源的单个存档文件perl

如果您绝对必须拥有一个可执行映像,请PAR::Packer改为查看。


更新

我实际上希望这个程序在没有安装 perl 的计算机上运行。我知道我必须编译我的代码才能工作。PAR包不这样做,对吧?

不,您不必编译 Perl 源代码即可将其放入包中。这样做会适得其反,因为由于ByteLoader解释生成的解析树所需的额外模块,加载时间往往会增加。

我实际上需要安装和使用 PAR::Packer 的帮助,因为我无法在 Windows 上的 ActivePerl 上安装它,而且它在 linux 上为我制作的可执行文件在 Windows 64 位上无法运行。所以我做错了什么

我没有 ActivePerl 的实例,但Par::Packer可以在 Strawberry Perl 5 16.2 版上正常安装并通过所有测试。请理解,您无法在一个系统上构建将在不同平台上运行的可执行文件。这适用于每种语言,而不仅仅是 Perl。您需要在与您的目标兼容的系统上使用 Perl 的工作版本,以便能够构建可以在其他地方工作的可执行文件。

于 2013-03-23T12:47:14.610 回答