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

4
我在 Mac OS X 10.5 下编译了 Perl 5.10.1,它被编译为 32 位程序。后来我升级到了 Mac OS X 10.6。我的 Perl 5.10.1 版本继续正常工作,但我刚试图编译 JSON::XS 时出现了以下错误:
无法加载 '/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle',因为找不到合适的映像。已找到:/Users/cowens/.cpan/build/JSON-XS-2.26-clO6XX/blib/arch/auto/JSON/XS/XS.bundle:mach-o,但架构不正确,位于 /Users/cowens/local/lib/perl5/5.10.1/darwin-thread-multi-2level/DynaLoader.pm 的第 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 和所有模块(我不确定是否想要这样做)。

我认为问题在于您正在使用与编译 Perl 时不同的编译器进行编译。 - user181548
嗯,GCC的升级版本可能是问题所在,但它生成64位库的事实绝对是个问题(32位程序无法加载64位库)。 - Chas. Owens
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位构建。

1

请确保您的系统perl不是64位的,同时您使用的perl也没有加载这个64位的perl配置。您可以通过转储%INC来进行检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接