我在编译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位win7)。
我试图编译我的代码,使其成为一个独立的。exe文件(虽然它将是伟大的,能够为其他系统编译太(因为我认为我的代码不使用任何系统特定的功能)。
我不介意安装虚拟机(如果需要32位win或linux),我不介意安装草莓perl而不是ActivePerl…我只是想能够编译代码:-)
尝试使用perl2EXE,它说它找不到一些模块(尽管每个模块都是由ppm安装的)。我试着用Perl Packager (PAR::Packer)在linux上编译(因为它没有显示在ppm上,而且我以其他方式安装它有麻烦),但是创建的文件不起作用。
…帮助吗?: -)
您是否知道所有perl2exe
所做的是创建包含所有源文件(可能处于编译状态,我不确定)的perl解释器可执行文件的副本?
我建议您使用PAR package
,它将构建一个包含所有必要源代码的单一归档文件,可以从perl
命令行运行。
如果你绝对必须有一个单一的可执行映像,那么看看PAR::Packer
。
我实际上希望这个程序可以在没有安装perl的计算机上运行。我明白我必须编译我的代码,这工作。PAR包不会这样做,对吧?
不,您不需要编译Perl源代码来将其放入包中。这样做会适得其反,因为加载时间往往会增加,因为需要额外的ByteLoader
模块来解释结果解析树。
我实际上需要帮助安装和使用PAR::Packer,因为我无法在windows上的ActivePerl上安装它,并且它在linux上为我制作的可执行文件在windows 64位上不起作用。所以我做错了什么
我没有ActivePerl的实例,但Par::Packer
安装在草莓Perl 5版本16.2和通过所有测试。请理解,不能在一个系统上构建将在不同平台上运行的可执行文件。这适用于所有语言,而不仅仅是Perl。您需要在与目标系统兼容的系统上运行Perl的工作版本,以便能够构建可在其他地方运行的可执行文件。