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 ビットとしてコンパイルしてみます。CCFLAGS
64ビットライブラリではなく32ビットライブラリとして強制的にコンパイルするように設定できる 環境変数(のような)があると思います。
別の方法は、Perl とすべてのモジュールを再コンパイルすることのようです (やりたいことがよくわかりません)。