5

次を実行して、Perl スクリプトから実行可能ファイルを作成すると:

pp -o process_target_mode_data Process_Target_Mode_Data.pl

次のエラー出力が表示されます。

 Perl lib version (5.12.2) doesn't match executable version (v5.12.0) at /home/Neil/ActivePerl-5.12/lib/Config.pm line 50.

Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
Compilation failed in require at -e line 459.

/home/Neil/ActivePerl-5.12/site/bin/pp: Failed to extract a parl from 'PAR::StrippedPARL::Static' to file 'parleNrP2Xi' at /home/Neil/ActivePerl-5.12/site/lib/PAR/Packer.pm line 1172, <DATA> line 1.

何が起こっているのか、この問題を解決するにはどうすればよいのか、誰か説明してもらえますか?

ブライアン・ド・フォイがリクエストした情報:

[bash-3.2][Neil@willy]$ which pp
/home/ニール/ActivePerl-5.12/site/bin/pp

[bash-3.2][Neil@willy]$ /home/Neil/ActivePerl-5.12/site/bin/pp -o process_target_mode_data Process_Target_Mode_Data.pl
/home/Neil/ActivePerl-5.12/lib/Config.pm 行 50 で、Perl lib バージョン (5.12.2) が実行可能バージョン (v5.12.0) と一致しません。
/home/Neil/ActivePerl-5.12/lib/Errno.pm 8 行目でコンパイルに失敗しました。
BEGIN が失敗しました -- コンパイルは /home/Neil/ActivePerl-5.12/lib/Errno.pm 行 8 で中止されました。
/home/Neil/ActivePerl-5.12/lib/File/Temp.pm の 148 行目でコンパイルに失敗しました。
BEGIN が失敗しました -- コンパイルは /home/Neil/ActivePerl-5.12/lib/File/Temp.pm 行 148 で中止されました。
/home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm の 14 行目でコンパイルに失敗しました。
BEGIN が失敗しました -- コンパイルは /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm 行 14 で中止されました。
-e 行 459 でコンパイルが require で失敗しました。
/home/Neil/ActivePerl-5.12/site/bin/pp: 'PAR::StrippedPARL::Static' から /home/Neil/ActivePerl-5.12/site/lib/PAR にあるファイル 'parludZfldz' への parl の抽出に失敗しました/Packer.pm 1172 行目、1 行目。
[bash-3.2][Neil@willy]$  


[bash-3.2][Neil@willy]$ /home/Neil/ActivePerl-5.12/bin/cpan -l | grep PAR
PAR 1.002
PAR::距離 0.47
PAR::重い 0.12
PAR::フィルター 0.03
PAR::セットアップ温度 1.002
PAR::SetupProgname 1.002
PAR::パッカー 1.006
PAR::StrippedPARL::Dynamic 0.958
PAR::StrippedPARL::Static 0.958
PAR::StrippedPARL::Base 0.975
PAR::フィルター::バイトコード未定義
PAR::フィルター::未定義のブリーチ
PAR::Filter::undef を難読化する
PAR::Filter::PatchContent undef
PAR::Filter::PodStrip undef
アプリ::パッカー::PAR 0.91
4

4 に答える 4

3

Perl lib バージョン (5.12.2) が実行可能バージョン (v5.12.0) と一致しません

Perl インストールの一部は、他のバージョンとは異なるバージョンになっています。より具体的には、/home/Neil/ActivePerl-5.12/lib/Config.pm50 行目を見ると、実行されている Perl のバージョン (5.12.0) と使用されている Config.pm ライブラリのバージョン (5.12.2) が明示的に比較されていることがわかります。

ActivePerl 5.12.2 の新規インストールを実行すると (すべてのコンポーネントを同じバージョンにするため)、このエラーは解消されます。

于 2010-10-07T16:14:25.533 に答える
3

私は同じ問題を抱えていました。Activestate Perl Package Manager (PPM) から PAR::Packer をインストールしました。上記の回答の 1 つで述べたように、perl と pp のバイナリ間にバージョンの不一致があります。これが私がそれを修正した方法です:

  1. PPM から PAR-Packer をアンインストールします。
  2. DOS コマンド ラインを開きます。
  3. 走るcpan install PAR::Packer

これにより、CPAN からパッケージがダウンロード、コンパイル、およびインストールされます。必要に応じて、MinGW コンパイラ ツールチェーンもダウンロードされます。低速の CPU では、プロセス全体に時間がかかる場合があります。

于 2011-01-20T15:20:35.793 に答える
2

その の場所を見つけて、ppそのバージョンを把握します。以前のインストールから残っているに違いありません。新しいバージョンの Perl の PAR があることを確認してください。

pp使用したい特定の場所を指定して、使用しているものを正確に把握することもできます。

 $ /full/path/to/5.12.2/pp ...
于 2010-10-07T17:34:37.153 に答える
0

perl/lib/Config.pm に移動し、次の行の条件を変更しました。

die "$0: Perl lib version (5.32.0) doesn't match executable '$^X' version ($])" unless $^V;

die "$1: Perl lib version (5.32.1) doesn't match executable '$^X' version ($])" unless $^V;

そして次の行

$^V eq 5.32.0 or die sprintf "%s: Perl lib version (5.32.0) doesn't match executable '$^X' version (%vd)", $0, $^V;

$^V eq 5.32.1 or die sprintf "%s: Perl lib version (5.32.1) doesn't match executable '$^X' version (%vd)", $0, $^V;

これは私にとってはうまくいきました、少なくとも文句はありません...はい、私は知っています、PERLとPythonはめちゃくちゃです。

于 2021-04-16T00:44:25.087 に答える