Esegui l'app a 64 bit sul sistema Ubuntu a 32 bit


10

Tutte le domande che ho visto si riferiscono all'esecuzione di un'app a 32 bit in un sistema a 64 bit.

Sto eseguendo Ubuntu 12.04 a 32 bit (in realtà OS elementare Luna, che si basa su di esso) e sto cercando di eseguire un'app a 64 bit che rifiuta l'apertura. In esecuzione:

./64bit_app.run

(dov'è 64bit_app.runl'app a 64 bit che sto cercando di eseguire) si traduce in:

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

che si traduce in " impossibile eseguire / eseguire / aprire il file binario ".

Dovrei essere in grado di eseguirlo? È possibile eseguire un'app a 64 bit in un sistema a 32 bit? Se é cosi, come?


Ho non provato questo, ma vi ho tentato le soluzioni mostrato qui , esoecially la risposta che spiega dpkg --add-architecture? Per quanto ne so, lo stesso approccio dovrebbe funzionare per 32 su 64 e per 64 su 32. Basta passare dpkg --add-architecture i386a dpkg --add-architecture amd64.
terdon

1
si fare avere hardware a 64 bit, giusto? (solo per essere sicuri)
strugee

"che rifiuta di aprire"? come esattamente?
Braiam

1
Si prega di leggere le risposte alla domanda a cui ho collegato , è necessario eseguire sudo dpkg --add-architecture amd64prima. Questo è un comando separato.
terdon

1
@terdon mi dispiace, non l'ho capito. L'esecuzione di quella riga comporta: dpkg: error: opción --add-architecture desconocidadove si desconocidatraduce unknown.
Gabriel

Risposte:


8

Non puoi farlo direttamente su Linux su x86_64 con un kernel a 32 bit. È necessario un kernel a 64 bit per poter eseguire il codice a 64 bit. (Nota: kernel. È possibile avere un'area utente a 32 bit in esecuzione su un kernel a 64 bit e installare il supporto per i binari a 64 bit. Quanto sia facile dipende dalla distribuzione. Esempio qui per Debian.)

Alcuni software di virtualizzazione sono in grado di farlo (con restrizioni sul tipo di CPU che stai utilizzando), e anche gli emulatori possono farlo. Ma per eseguirlo nativamente avrai bisogno di un kernel a 64 bit.

Poiché la maggior parte delle distribuzioni a 64 bit là fuori ha il supporto a 32 bit (per impostazione predefinita o installabile), questo è quello che dovresti usare se devi eseguire binari a 64 e 32 bit sullo stesso sistema operativo.


7

Estensione della risposta di @ Mat:

Sì, alcuni software di virtualizzazione possono farlo. L'ostacolo principale da gestire è che in un ambiente a 32 bit, le funzionalità a 64 bit della CPU non sono disponibili e anche le funzionalità di un kernel a 64 bit non sono disponibili. È anche così se la tua CPU ha il supporto a 64 bit (dal 2003 circa, tutti hanno).

La tua domanda afferma implicitamente che desideri eseguire l'app a 64 bit nel tuo ambiente di sistema. Se è davvero tua intenzione, ciò esclude tutte le soluzioni basate su macchine virtuali. L'unica cosa che rimane nota per me è l'emulazione del kernel del qemu. Così:

qemu-x86_64 ./your_64bit_app

Esegue la tua app sul tuo sistema attuale, con il tuo kernel corrente, con le tue variabili di ambiente correnti . Ovviamente non è molto veloce, deve emulare la tua CPU.

Può emulare solo app Linux x86-64.


Da qualche parte ho anche letto, come se anche vmware potesse farlo, ma questo non è abbastanza sicuro per una risposta. I vmware recenti di Afaik sono solo a 64 bit sul lato host.
Peter - Ripristina Monica il

1

La maggior parte delle architetture a 64 bit sono estensioni a quelle a 32 bit. Sono più recenti e completamente diversi, quindi ovviamente un'architettura a 32 bit non ha idea di quale sia la controparte a 64 bit. Non sanno quali sono le nuove funzionalità, quali nuovi registri ci sono ... Anche se lo sanno, non hanno accesso ai nuovi registri e funzionalità. Di conseguenza un kernel a 32 bit non può salvare contesti a 64 bit. Tutto ciò rende impossibile l'esecuzione di app a 64 bit su un sistema a 32 bit.

Un kernel a 32 bit con attenzione a 64 bit creato con cura può eseguire app a 64 bit ma ha ancora bisogno di un po 'di codice a 64 bit per salvare il contesto, il che non lo rende più un puro kernel a 32 bit.

È possibile eseguire un sistema operativo a 64 bit all'interno di un emulatore o una macchina virtuale guest a 64 bit all'interno di un host a 32 bit con VT-x. Ma tecnicamente stai eseguendo un diverso sistema a 64 bit. Non è ancora possibile eseguire il codice a 64 bit direttamente sul kernel Linux a 32 bit

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.