Ejecute la aplicación de 64 bits en el sistema Ubuntu de 32 bits

10

Todas las preguntas que he visto se refieren a ejecutar una aplicación de 32 bits en un sistema de 64 bits.

Estoy ejecutando Ubuntu 12.04 de 32 bits (en realidad, OS Luna elemental, que se basa en él) y estoy tratando de ejecutar una aplicación de 64 bits que se niega a abrir. Corriendo:

./64bit_app.run

(donde 64bit_app.runestá la aplicación de 64 bits que estoy tratando de ejecutar) da como resultado:

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

que se traduce como " no se puede ejecutar / ejecutar / abrir archivo binario ".

¿Debería poder ejecutarlo? ¿Es posible ejecutar una aplicación de 64 bits en un sistema de 32 bits? ¿Si es así, cómo?

Gabriel
fuente
He no probado esto, pero he intentado que las soluciones se muestra aquí , la respuesta esoecially explicar dpkg --add-architecture? Hasta donde yo sé, el mismo enfoque debería funcionar para 32 en 64 y para 64 en 32. Simplemente cambie dpkg --add-architecture i386a dpkg --add-architecture amd64.
terdon
1
que hacer tener un hardware de 64 bits, ¿verdad? (solo para asegurarse)
strugee
"que se niega a abrir"? ¿cómo exactamente?
Braiam
1
Lea las respuestas a la pregunta a la que me vinculé , debe ejecutar sudo dpkg --add-architecture amd64primero. Esa es una orden separada.
terdon
1
@terdon lo siento, no entendí eso. Ejecutar esa línea da como resultado: dpkg: error: opción --add-architecture desconocidadonde se desconocidatraduce a unknown.
Gabriel

Respuestas:

8

No puede hacer eso directamente en Linux en x86_64 con un núcleo de 32 bits. Necesita un núcleo de 64 bits para poder ejecutar código de 64 bits. (Nota: kernel. Puede tener una tierra de usuario de 32 bits ejecutándose en un kernel de 64 bits e instalar soporte para binarios de 64 bits. La facilidad de esto depende de la distribución. Ejemplo aquí para Debian).

Algunos software de virtualización pueden hacerlo (con restricciones en el tipo de CPU que está utilizando), y los emuladores también pueden hacerlo. Pero para ejecutarlo de forma nativa necesitarás un núcleo de 64 bits.

Dado que la mayoría de las distribuciones de 64 bits tienen soporte de 32 bits (ya sea de forma predeterminada o instalable), eso es lo que debe usar si necesita ejecutar binarios de 64 bits y 32 bits en el mismo sistema operativo.

Estera
fuente
7

Extendiendo la respuesta de @ Mat:

Sí, algún software de virtualización puede hacerlo. El principal obstáculo para manejar es que en un entorno de 32 bits, las características de 64 bits de la CPU no están disponibles, y tampoco las características de un núcleo de 64 bits. Aún así, si su CPU tiene soporte de 64 bits (desde alrededor de 2003, todos lo tienen).

Su pregunta indica implícitamente que desea ejecutar la aplicación de 64 bits en su propio entorno de sistema. Si realmente es su intención, esto excluye todas las soluciones basadas en máquinas virtuales. Lo único que me queda es la emulación de kernel de qemu. Entonces:

qemu-x86_64 ./your_64bit_app

Ejecuta su aplicación en su sistema actual, con su núcleo actual, con sus variables de entorno actuales . Por supuesto que no es muy rápido, tiene que emular tu CPU.

Solo puede emular aplicaciones linux x86-64.

peterh - Restablece a Monica
fuente
En algún lugar también he leído, como si vmware también pudiera hacer eso, pero esta información no es suficiente para responder. Los vmware recientes de Afaik son solo de 64 bits en el lado del host.
peterh - Restablece a Monica
1

La mayoría de las arquitecturas de 64 bits son extensiones de las de 32 bits. Son más nuevos y completamente diferentes, por lo que obviamente una arquitectura de 32 bits no tiene idea de cuál es la contraparte de 64 bits. No saben cuáles son las nuevas características, qué nuevos registros hay ... Incluso si lo saben, no tienen acceso a los nuevos registros y características. Como resultado, un núcleo de 32 bits no puede guardar contextos de 64 bits. Todo eso hace que sea imposible ejecutar aplicaciones de 64 bits en un sistema de 32 bits.

Un núcleo de 32 bits cuidadosamente diseñado para 64 bits puede ejecutar aplicaciones de 64 bits, pero aún necesita un código de 64 bits para ahorrar en el contexto, lo que hace que ya no sea un núcleo puro de 32 bits.

Puede ejecutar un sistema operativo de 64 bits dentro de un emulador, o una máquina virtual invitada de 64 bits dentro de un host de 32 bits con VT-x. Pero técnicamente está ejecutando en un sistema diferente de 64 bits. Todavía no es posible ejecutar código de 64 bits directamente en el kernel de Linux de 32 bits

phuclv
fuente