Un programma è stato rispettato in un lavoro a 64 bit su macchina a 32 bit?
-
19-09-2019 - |
Domanda
Come detto il titolo, ho il programma C rispettato e creato un binario in macchina a 64 bit. Questo lavoro binario con 32 bit?
Soluzione
I binari a 64 bit non possono funzionare su un sistema operativo a 32 bit. Se file
rapporti ELF 64-bit
, hai un binario a 64 bit.
Per costruire binari a 32 bit su un Linux a 64 bit, è necessario passare -m32
a GCC. È inoltre necessario installare librerie a 32 bit (sudo apt-get install libc6-dev-i386
).
Altri suggerimenti
La macchina di compilazione non ha importanza. Ciò che conta è: il codice generato 32 bit (risposta: sì) o 64 bit (risposta: no).
Will it work on a 32-bit machine? One with a CPU which doesn't support 64-bit mode? No.
Will it work on a 64-bit VM on a 32-bit native OS? Yes, in my experience.
A surprising result is that 64-bit VMs CAN be run under a 32-bit host OS, provided the CPU is capable and you don't want to allocate too much ram (>2G or thereabouts) to the guest.