强制 Perl 在 32 位模式下工作

发布于 2024-11-28 00:45:30 字数 180 浏览 4 评论 0原文

我们有一个旧的 Perl 应用程序。最近我们搬到了一台运行 64 位 Ubuntu 的新服务器。 旧应用程序使用打包/解包函数和按位运算,现在它失败了,因为按位运算返回 64 位整数而不是 32 位。

有没有办法强制 perl 进入 32 位模式? 如果没有,有没有办法在64位机器上安装32位perl?

谢谢!

We have an old Perl application. Recently we moved to a new server which runs 64-bit Ubuntu.
Old application uses pack/unpack functions and bitwise operations and now it fails because bitwise operations return 64-bit integers instead of 32-bit.

Is there a way to force perl into 32-bit mode?
If not, is there a way to install 32-bit perl on 64-bit machine?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

云雾 2024-12-05 00:45:30

有没有办法强制 perl 进入 32 位模式?

不,但您可以改用正确的(便携式)打包/解包模式并使用 &位旋转时适当的 0xFFFFFFFF

如果没有,有没有办法在64位机器上安装32位perl?

来自 INSTALL

本机 64 位系统既不需要 -Duse64bitint 也不需要 -Duse64bitall。在这些系统上,它可能是默认编译模式,并且当前不能保证将 no use64bitall 选项传递给配置进程将构建 32 位 perl。计划在未来版本的 perl 中实现 -Duse32bit* 选项。

所以答案是:也许,但也可能不是。

Is there a way to force perl into 32-bit mode?

No, but you could switch to using the correct (portable) pack/unpack patterns and using & 0xFFFFFFFF where appropriate when bit twiddling.

If not, is there a way to install 32-bit perl on 64-bit machine?

From INSTALL:

Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. On these systems, it might be the default compilation mode, and there is currently no guarantee that passing no use64bitall option to the Configure process will build a 32bit perl. Implementing -Duse32bit* options is planned for a future release of perl.

So the answer is: maybe, but probably not.

紫南 2024-12-05 00:45:30

看来您可以通过在软件包名称后缀 :i386 来安装 32 位软件包。至少这在安装库时对我有用。

$ sudo apt-get install libelf1:i386

我不知道这是否适用于非库,因为可能会出现文件名和路径冲突。对于库,32 位和 64 位库被打包到不同的目录中。

It appears that you can install 32-bit packages by suffixing the package name with :i386. At least this worked for me when installing a library.

$ sudo apt-get install libelf1:i386

I don't know if this works with non-libraries, as there would likely be filename and path conflicts. With libraries, 32-bit and 64-bit libraries are packaged to fall into separate directories.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文