编译我的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)。我尝试使用Perl Packager(PAR :: Packer)在linux上进行编译(因为它没有在ppm上显示,我在安装它时遇到了麻烦)但是创建的文件没有用。
...帮忙? : - )
答案 0 :(得分: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的工作版本才能构建可在其他位置工作的可执行文件。