gpt4 book ai didi

perl - 如何在 64 位 CentOS 系统上为 32 位自定义 Perl 构建 32 位 XS 模块?

转载 作者:行者123 更新时间:2023-12-04 12:41:41 28 4
gpt4 key购买 nike

我有一个运行定制版本的 Perl 5.12.5 的 64 位 CentOS 6 系统,它是为 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 的构建系统(特别是 ExtUtils::MakeMaker 和 ExtUtils::CBuilder)假定用于构建 perl 的编译平台也是可用的运行时平台。显然这里不是这样。

显而易见的解决方案是使用可在两个工具链上生成相同可执行文件的选项来编译 perl。这是相当棘手的。

关于perl - 如何在 64 位 CentOS 系统上为 32 位自定义 Perl 构建 32 位 XS 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902503/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com