如何使OS X 10.6将JSON :: XS编译为32位而不是64位?

时间:2009-11-04 14:55:08

标签: perl macos compilation 32bit-64bit

我在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-bit bundle x86_64

由于这很可能是罪魁祸首,我想尝试将模块编译为32位。我假设有一些环境变量(如CCFLAGS)我可以设置强制它编译为32位库而不是64位库。

替代方案似乎是重新编译Perl和我的所有模块(我不确定我想做什么)。

2 个答案:

答案 0 :(得分: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位构建。

答案 1 :(得分:1)

确保您的系统perl不是64位,并且您的perl副本未加载64位perls配置。您可以通过转储%INC

进行检查