我在 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
)我可以设置强制它编译为 32 位库而不是 64 位库。
另一种方法似乎是重新编译 Perl 和我的所有模块(我不确定我是否想要这样做)。