2010-02-25 19 views
12

Estoy desarrollando una aplicación de 64 bits. ¿Es posible ejecutar la aplicación de 64 bits en un sistema operativo de 32 bits?Estoy desarrollando una aplicación de 64 bits. ¿Es posible ejecutar la aplicación de 64 bits en un sistema operativo de 32 bits?

Tenga en cuenta que la pregunta es genérica y no específica del sistema operativo Windows. De hecho, la aplicación en sí misma es portátil en todo el sistema operativo.

+1

De la pregunta, parece que está intentando usar la aplicación en cuestión. Reescribiría el título y la pregunta: "Estoy desarrollando una aplicación de Windows. ¿Puedo enviar solo binarios de 64 bits y hacer que funcionen en Windows de 32 bits y de 64 bits?" –

+0

@Douglas, Espero que mi edición esté bien. – Jay

+1

Cerrado temporalmente y reabierto para evitar la migración a SU. –

Respuesta

14

(Vamos a suponer que estás hablando AMD64 (== == EM64T x86_64) y x86 de 64 bits y 32 bits respectivamente)

Puede ejecutar código AMD64 en procesadores x86 solamente por la emulación (por ejemplo, qemu), o algunos tipos de virtualización (creo que VMWare podría admitir el sistema operativo invitado de 64 bits en el sistema operativo host de 32 bits en 64 CPU con capacidad de bits). Sin embargo, esto significa ejecutar un sistema operativo de 64 bits como invitado de emulación o virtualización, creo.

A medida que desarrolla la aplicación, no debería ser demasiado difícil desarrollar compilaciones tanto de 32 bits como de 64 bits.

Para Mac puede enviar un solo código binario que tenga ambos tipos de código, o Mac OSX puede ejecutar su binario de 64 bits en un kernel de 32 bits (aunque solo en un procesador con capacidad x86_64). Para Windows y Linux, ya sea que usted tiene que enviar los instaladores independientes, o enviar algún instalador inteligente, que selecciona los archivos binarios correctos en el momento de la instalación. Para Linux existe un proyecto para agregar la capacidad de ejecutar código en el kernel AMD64 x86 en el procesador AMD64 - http://linuxpae64.sourceforge.net/ - pero no parece que tiene muy lejos en el núcleo principal.

¿Hay alguna razón en particular por la que solo desee producir binarios de 64 bits?
Si se trata de acceder a la memoria adicional, a continuación, el sistema operativo de 32 bits no sería capaz de darle más memoria de todos modos.
Si se trata de evitar tener que probar 2 versiones diferentes, solo cree la versión de 32 bits, funcionará en Windows AMD64 y la mayoría de las distribuciones de Linux AMD64 sin problemas.

+0

Especialmente en algunos casos si está ejecutando el host de 32 bits en una CPU de 64 bits. –

+0

En mac, también puede enviar un binario de 64 bits y funcionará en kernels de 32 y de 64 bits. –

+0

@Stephen - interesante - Editaré mi respuesta. –

7

En Windows, solo usando virtual machine.

En OS X, 64 bits Las aplicaciones funcionan de forma nativa (gracias Stephen)

+0

¿Quién está bajando la votación de todas estas respuestas sin proporcionar una corrección? –

+0

+1 - Somones downvoting todas las respuestas, incluida la mía. y no puedo ver por qué. Si nos equivocamos, proporcione la solución correcta. – LiamB

+0

@Pino: Creo que alguien trató de obtener su respuesta a la cima al principio mediante la votación negativa de todas las demás respuestas –

5

El revés está bien, algo que no creo que se puede ejecutar una aplicación de 64 bits en un sistema operativo de 32 bits, que puede ser capaz de utilizar un Portal máquina o algún tipo de virtualización.

+0

¿Por qué esto se desestimó? – LiamB

+0

Esto todavía tiene un voto negativo, ¿alguien puede explicar por qué? – LiamB

+0

Depende del sistema operativo. No funcionará en Windows, pero funcionará en OS X. –

2

Ver this (suponiendo que se está ejecutando Windows):

Si el programa está diseñado específicamente para la versión de 64 bits de Windows, no va a funcionar en la versión de 32 bits de Windows. (Sin embargo, la mayoría de los programas diseñados para la versión de 32 bits de Windows funcionarán en la versión de 64 bits de Windows).

Los controladores de dispositivo diseñados para la versión de 64 bits de Windows no funcionarán en equipos con 32 la versión de bit de Windows. Para saber cómo comprobar si los controladores, consulte Actualizar un controlador de hardware que no está funcionando correctamente o ir a la página web del fabricante del dispositivo.

3

es posible usando qemu en modo de emulación suave

3

No.

See Microsoft FAQ:

Los términos de 32 bits y de 64 bits se refieren a la forma en el procesador de un ordenador (también llama una CPU), administra la información. La versión de 64 bits de Windows maneja grandes cantidades de memoria de acceso aleatorio (RAM) de manera más efectiva que un sistema de 32 bits . Para obtener más información, vaya a A descripción de las diferencias entre versiones de 32 bits de Windows Vista y versiones de 64 bits de Windows Vista en línea.

Comprenda la diferencia entre 32 bits y 64 bits y verá por qué no es posible.

+0

¿Qué hay de la emulación y las máquinas virtuales? – mouviciel

+0

Eso no es "nativo", lo que supongo que el OP pregunta. –

+0

@mouviciel: Entonces el programa de 64 bits se estaría ejecutando en una plataforma emulada o virtual de 64 bits en lugar de ejecutarse en una plataforma de 32 bits. –

4

Hay una solución más fácil que tratar de ejecutar un programa de 64 bits en un sistema operativo de 32 bits (incluida la ejecución a través de una plataforma emulada o virtual de 64 bits sobre el sistema operativo de 32 bits): recompilarlo para el SO de 32 bits.

Cuando dijo que es portátil en diferentes sistemas operativos, ¿también se refirió a sistemas operativos que no son de 64 bits? No podría llamar a algo portátil sin calificar "solo 64 bits" si ese fuera el caso, y creo que muchos (¿incluso la mayoría?) Programadores también esperan esa calificación, al menos actualmente.

2

En Windows, no. En OS X, sí. No sé cuál es el estado de las cosas en Linux.

De hecho, botas de leopardo de nieve en un núcleo de 32 bits, pero compila aplicaciones de 64 bits de forma predeterminada, por lo que esto es bastante común en OS X.

2

una aplicación de 64 bits no se ejecuta en un poco 32 período de procesador

Una aplicación de 64 bits utiliza un registro de 64 bits de ancho. Simplemente no encajará.

Cuestiones relacionadas