强制 Perl 在 32 位模式下工作
我们有一个旧的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,但您可以改用正确的(便携式)打包/解包模式并使用
&位旋转时适当的 0xFFFFFFFF
。来自
INSTALL
:本机 64 位系统既不需要 -Duse64bitint 也不需要 -Duse64bitall。在这些系统上,它可能是默认编译模式,并且当前不能保证将 no use64bitall 选项传递给配置进程将构建 32 位 perl。计划在未来版本的 perl 中实现 -Duse32bit* 选项。
所以答案是:也许,但也可能不是。
No, but you could switch to using the correct (portable) pack/unpack patterns and using
& 0xFFFFFFFF
where appropriate when bit twiddling.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.
看来您可以通过在软件包名称后缀 :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.