4

OS X 10.5 で Perl 5.10.1 をコンパイルしました。32ビットプログラムとしてコンパイルされました。その後、OS X 10.6 にアップグレードしました。私のバージョンの Perl 5.10.1 は引き続き正常に動作しますが、JSON::XS をコンパイルしようとしたところ、次のようなエラーが発生しました。

Can't load '/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle' for module JSON::XS: dlopen(/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle, 2): no suitable image found. Did find: /Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle: mach-o, but wrong architecture at /Users/cowens/local/lib/perl5/5.10.1/darwin-thread-multi-2level/DynaLoader.pm line 204.

ざっと見てみると、/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle実際に 64 ビット ライブラリであることがわかります。

/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle: Mach-O 64 ビット バンドル x86_64

これが原因である可能性が高いため、モジュールを 32 ビットとしてコンパイルしてみます。CCFLAGS64ビットライブラリではなく32ビットライブラリとして強制的にコンパイルするように設定できる 環境変数(のような)があると思います。

別の方法は、Perl とすべてのモジュールを再コンパイルすることのようです (やりたいことがよくわかりません)。

4

2 に答える 2

1

Perlがにインストールされている場合/usr/perl/v5.10.1は、ファイルを調べてみてください/usr/perl/v5.10.1/lib/5.10.1/darwin-2level/Config.pm。その中に「cc」のエントリがあるはずです。慎重に(最初にバックアップコピーを取ります)、それを「cc」から「cc-m32」に変更します。JSON::XSを再構築してみてください。これは、Perlの構成の見方を変更することであり、「cc-m32」は32ビットビルドを強制します。

于 2009-11-05T14:28:16.030 に答える
1

システムの perl が 64 ビットではないこと、および perl のコピーがその 64 ビットの perl 構成をロードしていないことを確認してください。%INC をダンプすることで確認できます

于 2009-11-08T18:53:00.037 に答える