【发布时间】:2013-05-29 22:39:33
【问题描述】:
我有一个 64 位 CentOS 6 系统,运行一个定制版本的 Perl 5.12.5,它是为 32 位构建的。 (唉,这是因为我们在 32 位和 64 位系统上使用相同的 RPM。)
当我在服务器上构建 XS 模块(例如 JSON::XS)时,它失败了,因为它正在构建 64 位库。我收到类似的错误
Can't load '.cpanm/work/1370279501.28897/JSON-XS-2.33/blib/arch
/auto/JSON/XS/XS.so' for module JSON::XS: .cpanm/work/137027950
1.28897/JSON-XS-2.33/blib/arch/auto/JSON/XS/XS.so: wrong ELF class: ELFCLASS64
at /opt/perl/lib/5.12.5/i686-linux/DynaLoader.pm line 200.
我尝试将 CFLAGS 变量设置为“-m32-bit”,但它不起作用。
我需要做什么才能正确编译 XS 模块?理想情况下,我想要一些可以与 cpanminus 一起使用但如果需要可以使用 cpan 或 cpanplus 的东西。
【问题讨论】:
-
奇数。它应该使用与构建 Perl 完全相同的设置。
-
@ikegami Perl 是在 32 位机器上构建的,所以可能不需要明确设置。
-
修复损坏的 Perl(即正确安装)以解决您的问题。
-
@ikegami 你能更具体一点吗?怎么没有正确安装?它在 PATH 中,PERL5LIB 变量设置正确,local-lib 变量设置正确。 CPAN 和 CPANPLUS 模块已正确配置并在 32 位系统上正常工作。
-
您说您将它构建在与安装它的机器不同的机器上,但
perl目前没有交叉编译器。