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 ビットの Windows が必要な場合や Linux の場合)、ActivePerl の代わりに Strawberry perl をインストールしてもかまいません... コードをコンパイルできるようにしたいだけです :-)

perl2EXE を使用しようとすると、いくつかのモジュールが見つからないと言われました (ただし、それらはすべて ppm によってインストールされました)。Perl Packager (PAR::Packer) を使用して Linux でコンパイルしようとしましたが (ppm では表示されず、他の方法でインストールするのに苦労したため)、作成されたファイルは機能しませんでした。

... ヘルプ?:-)

4

1 に答える 1

0

すべてのソース ファイルを含む perl インタープリター実行可能ファイルのコピーを作成するだけでよいことを認識してperl2exeいますか (コンパイル済みの状態である可能性がありますが、よくわかりません)。

代わりにを使用することをお勧めします。これにより、コマンド ラインPAR packageから実行できる必要なすべてのソースを含む単一のアーカイブ ファイルが作成されます。perl

単一の実行可能イメージが絶対に必要な場合は、PAR::Packer代わりに を参照してください。


アップデート

私は実際に、perl がインストールされていないコンピューターでこのプログラムを実行したいと考えています。これを機能させるには、コードをコンパイルする必要があることを理解しました。PARパッケージはそれをしませんよね?

いいえ、Perl ソースをコンパイルしてパッケージに入れる必要はありません。ByteLoader結果の解析ツリーを解釈するために余分なモジュールが必要になるため、ロード時間が長くなる傾向があるため、そうするのは非生産的です。

WindowsのActivePerlにインストールできず、Linuxで作成された実行可能ファイルがWindows 64ビットで動作しなかったため、PAR::Packerのインストールと使用について実際に助けが必要です。だから私は何か間違ったことをしている

ActivePerl のインスタンスはありませんが、Par::PackerStrawberry Perl 5 バージョン 16.2 に正常にインストールされ、すべてのテストに合格しています。別のプラットフォームで実行される 1 つのシステムで実行可能ファイルをビルドすることはできないことを理解してください。これは、Perl だけでなく、すべての言語に当てはまります。他の場所で動作する実行可能ファイルをビルドするには、ターゲットと互換性のあるシステム上で動作するバージョンの Perl が必要です。

于 2013-03-23T12:47:14.610 に答える