2010-02-25 3 views
12

Sto sviluppando un'applicazione a 64 bit. È possibile eseguire l'applicazione a 64 bit su un sistema operativo a 32 bit?Sto sviluppando un'applicazione a 64 bit. È possibile eseguire l'applicazione a 64 bit su un sistema operativo a 32 bit?

Si prega di notare che la domanda è generica e non specifica per il sistema operativo Windows. Infatti l'applicazione in sé è portatile attraverso il sistema operativo.

+1

Dalla domanda sembra che tu stia cercando di utilizzare l'applicazione in questione. Vorrei riformulare il titolo e la domanda: "Sto sviluppando un'applicazione Windows Posso spedire solo binari a 64 bit e farli funzionare su Windows a 32 e 64 bit?" –

+0

@Douglas, spero che la mia modifica vada bene. – Jay

+1

Temporaneamente chiuso e riaperto per impedire la migrazione a SU. –

risposta

14

(Ci supponendo che il vostro parlare AMD64 (== == EM64T x86_64) e x86 a 64 bit e 32 bit rispettivamente)

È possibile eseguire codice AMD64 su processori x86 solo con l'emulazione (ad esempio qemu) o alcuni tipi di virtualizzazione (credo che VMWare potrebbe supportare il sistema operativo guest a 64 bit su sistema operativo host a 32 bit su 64 CPU con capacità bit). Tuttavia, ciò significa eseguire un sistema operativo a 64 bit come guest su emulazione o virtualizzazione, credo.

Come si sta sviluppando l'applicazione, non dovrebbe essere troppo difficile sviluppare versioni del codice sia a 32 che a 64 bit.

Per Mac è possibile spedire un singolo binario che contiene entrambi i tipi di codice oppure Mac OSX può eseguire il file binario a 64 bit su un kernel a 32 bit (tuttavia solo su un processore in grado x86_64). Per Windows e Linux, dovrai spedire programmi di installazione separati o spedire un programma di installazione intelligente, che seleziona i file binari corretti al momento dell'installazione. Per Linux esiste un progetto per aggiungere la possibilità di eseguire il codice AMD64 sul kernel x86 sul processore AMD64 - http://linuxpae64.sourceforge.net/ - ma non sembra che sia molto lontano nel kernel della linea principale.

C'è un motivo particolare per cui si desidera produrre solo file binari a 64 bit?
Se è necessario accedere alla memoria aggiuntiva, il sistema operativo a 32 bit non sarà in grado di fornire comunque memoria aggiuntiva.
Se è necessario evitare testare 2 versioni diverse, produrre solo la versione a 32 bit, funzionerà su Windows AMD64 e sulla maggior parte delle distribuzioni Linux AMD64 senza problemi.

+0

Soprattutto in alcuni casi se si sta eseguendo l'host a 32 bit su una CPU a 64 bit. –

+0

Sul mac, puoi anche spedire un file binario a 64 bit e funzionerà sia con kernel a 32 che a 64 bit. –

+0

@Stephen - interessante - modifico la mia risposta. –

7

Su Windows, solo utilizzando un virtual machine.

Su OS X, 64 Bit APPS girare nativamente (grazie Stefano)

+0

chi sta facendo downvoting di tutte queste risposte senza fornire una correzione? –

+0

+1 - Somones che fa downvoting di tutte le risposte, inclusa la mia. e non riesco a capire perché. Se abbiamo torto, ti preghiamo di fornire la soluzione corretta. – LiamB

+0

@Pino: Penso che qualcuno abbia cercato di ottenere la risposta all'inizio facendo downvoting tutte le altre risposte –

5

Il contrario va bene, un po 'io non credo che si può eseguire un'applicazione a 64 bit su un sistema operativo a 32 bit, si può essere in grado di utilizzare un virtual macchina o qualche tipo di virtualizzazione.

+0

Perché è stato downvoted? – LiamB

+0

Questo ha ancora un downvote, qualcuno può spiegare perché? – LiamB

+0

Dipende dal sistema operativo. Non funzionerà su Windows, ma funzionerà su OS X. –

2

Vedi this (supponendo che si sta eseguendo Windows):

Se il programma è specificamente progettato per la versione a 64 bit di Windows, non funzionerà sulla versione a 32 bit di Windows. (Tuttavia, la maggior parte dei programmi progettati per la versione a 32 bit di Windows funzionerà sulla versione a 64 bit di Windows.)

I driver di dispositivo progettati per la versione a 64 bit di Windows non funzioneranno su computer che eseguono un 32 versione bit di Windows. Per informazioni su come verificare i driver, vedere Aggiornare un driver per l'hardware che non funziona correttamente o visitare il sito Web del produttore del dispositivo.

3

è possibile utilizzare qemu in morbido modalità di emulazione

3

No.

See Microsoft FAQ:

I termini a 32-bit e 64-bit fanno riferimento al il modo in cui il processore di un computer (anche chiamato CPU), gestisce le informazioni. La versione a 64 bit di Windows gestisce le quantità di memoria ad accesso casuale (RAM) in modo più efficace di un sistema a 32 bit. Per ulteriori dettagli, andare a A descrizione delle differenze tra versioni a 32 bit di Windows Vista e versioni a 64 bit di Windows Vista in linea.

Comprendere la differenza tra 32-bit e 64-bit e si vedrà il motivo per cui non è possibile.

+0

E riguardo l'emulazione e le macchine virtuali? – mouviciel

+0

Non è "nativo", credo che l'OP chieda. –

+0

@mouviciel: il programma a 64 bit verrà quindi eseguito su una piattaforma a 64 bit emulata o virtuale anziché su una piattaforma a 32 bit. –

4

C'è una soluzione più semplice rispetto a provare a eseguire un programma a 64 bit su un sistema operativo a 32 bit (incluso l'esecuzione tramite una piattaforma emulata o virtuale a 64 bit sul sistema operativo a 32 bit): ricompilalo per il OS a 32 bit.

Quando hai detto che è portatile su diversi SO, hai anche inteso OS non a 64 bit? Non potrei chiamare qualcosa di portatile senza qualificare "solo 64 bit", se così fosse, e penso che molti programmatori (forse anche la maggior parte?) Si aspettino questa qualifica, almeno al momento.

2

Su Windows, n. Su OS X, sì. Non so quale sia lo stato delle cose su Linux.

In realtà, stivali Snow Leopard in un kernel a 32 bit, ma compila applicazioni a 64-bit per default, quindi questo è abbastanza comune su OS X.

2

un'applicazione a 64 bit non viene eseguito su un po '32 periodo processore

Un'applicazione a 64 bit utilizza un registro a 64 bit. Semplicemente non andrà bene.