如何在Linux Mint 11 x64上启用32位二进制兼容性


8

我最近安装了x64 Linux Mint 11,基本上是Ubuntu Natty。自安装以来,我发现曾经在我的Ubuntu系统上运行的32位应用程序被我的Mint 11系统拒绝。当我使用“文件”实用程序检查二进制文件时,它正确地将其标识为32位elf,但是我无法调用该应用程序。

我尝试从bash和os.system a la python启动它,但无济于事,所以我怀疑它一定与32位二进制兼容模式有关,但我对该子系统的了解以及如何启用它有限,有人可以协助吗?

谢谢


+1询问。我也从甜食转变为薄荷!
Alain Pannetier

Answers:


5

安装ia32-libs并确保将应用程序文件标记为可执行文件,这应该可以完成工作!:)

后期编辑:

该库可能称为ia32-libs-multiarch,而不是ia32-libs。
apt-get install ia32-libs-multiarch


太好了,效果很好,谢谢!我有点不确定它为什么能工作?即使我以前缺少库,ldd至少也会列出所需的共享库文件。在安装ia32-libs之前,ldd会简单地说二进制文件不是动态链接的可执行文件,ia32-libs用来使32位应用程序运行时是否还有其他秘密之处?
Gearoid Murphy

我不确定老实,但这对我有用!:)(如果您愿意,请PS标记答案!)。:)
Ruairi Fullam

有趣的是,我删除了ia32-libs,该可执行文件仍然有效(它是静态链接的),在仔细检查“ lsmod”的输出后,我看到有一个名为“ binfmt_misc”的模块,这就是我所指的,我非常肯定这是支持替代二进制格式的主要要求,例如Windows的32位或COFF exe。
Gearoid Murphy

2

我对MINT一无所知,但是我对Debian有一些经验:要运行32位二进制文​​件,几乎在任何情况下都需要在64位环境中支持32位二进制文​​件的库。尝试

apt-get install ia32-libs

如果您的系统上有apt-get ...(或尝试aptitude或MINT附带的功能)

您可以使用ldd检查需要哪些库:

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

如果缺少任何库,ldd会告诉您。


当我在安装ia32-libs之前在32位二进制文​​件上使用ldd时,它返回一个错误,指出该二进制文件不是动态链接的可执行文件,我知道有一个内核模块可以处理不同的可执行文件格式,并且我已经预料到了这是为了实现32位二进制兼容性而需要配置的功能。
Gearoid墨菲
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.