在32位Ubuntu系统上运行64位应用程序


10

我所看到的所有问题都涉及在64位系统中运行32位应用程序。

我正在运行32位Ubuntu 12.04(实际上是基于它的基本OS Luna),并且正在尝试运行一个拒绝打开的64位应用程序。运行:

./64bit_app.run

64bit_app.run我尝试运行的64位应用程序在哪里)导致:

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

转换为“ 无法执行/运行/打开二进制文件 ”。

我应该能够运行它吗?是否可以在32位系统中运行64位应用程序?如果是这样,怎么办?


没有尝试过,但是您是否尝试过此处所示的解决方案,尤其是答案的解释dpkg --add-architecture?据我所知,相同的方法应该适用于64上的32和32上的64。只需更改dpkg --add-architecture i386为即可dpkg --add-architecture amd64
terdon

1
确实有64位硬件,对吗?(只是为了确保)
2014年

“哪个拒绝公开”?到底如何
Braiam 2014年

1
请阅读我链接到的问题的答案,您需要先运行sudo dpkg --add-architecture amd64。那是一个单独的命令。
terdon

1
@terdon抱歉,我不明白。运行该行会导致:dpkg: error: opción --add-architecture desconocida其中desconocida转换为unknown
加百利

Answers:


8

您不能在具有32位内核的x86_64的Linux上直接执行此操作。您需要一个64位内核才能运行64位代码。(注意:内核。您可以在64位内核上运行32位用户态,并安装对64位二进制文​​件的支持。这有多简单取决于发行版。此处为Debian的示例。)

某些虚拟化软件可以做到这一点(对您使用的CPU类型有限制),而仿真器也可以做到这一点。但是要在本地运行它,您将需要64位内核。

由于大多数64位发行版都支持32位(默认或可安装),因此如果需要在同一OS上同时运行64位和32位二进制文​​件,则应使用该版本。


7

扩展@Mat的答案:

是的,某些虚拟化软件可以做到。处理的主要障碍是在32位环境中,CPU的64位功能不可用,并且64位内核的功能也不可用。这是即使如此,如果你的CPU 支持64位(自2003年左右,他们都有)。

您的问题暗示您要在自己的系统环境中运行64位应用程序。如果确实要这样做,则不包括所有基于虚拟机的解决方案。对我而言,唯一剩下的就是qemu的内核仿真。所以:

qemu-x86_64 ./your_64bit_app

它会在您当前的系统上,当前内核,当前环境变量下运行您的应用程序。当然不是很快,它必须模拟您的cpu。

它只能模拟linux x86-64应用程序。


我也读过某个地方,好像vmware也可以做到这一点,但这还不足以确保获得答案的信息。Afaik最近的vmware在主机端仅64位。
彼得-恢复莫妮卡

1

大多数64位体系结构是对32位体系结构的扩展。它们是较新的并且完全不同,因此显然32位体系结构不知道64位体系结构是什么。他们不知道新功能是什么,有什么新寄存器...即使他们知道,他们也无法访问新寄存器和功能。结果,32位内核无法保存64位上下文。所有这些使在32位系统上运行64位应用程序成为不可能。

经过精心设计的可识别64位的32位内核可以运行64位应用程序,但仍需要一些64位代码来进行上下文保存,这使其不再是纯粹的32位内核。

您可以在模拟器中运行64位OS,也可以在具有VT-x的32位主机中运行64位来宾虚拟机。但是从技术上讲,您正在其他64位系统中运行。仍然不可能直接在32位Linux内核上运行64位代码

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.