Un programme respecté en 64 bits fonctionnera-t-il sur une machine 32 bits?
-
19-09-2019 - |
Question
Comme le dit le titre, j'ai le programme C respecté et créé un binaire dans une machine 64 bits. Ce travail binaire sous 32 bits?
La solution
Les binaires 64 bits ne peuvent pas fonctionner sur un système d'exploitation 32 bits. Si file
rapports ELF 64-bit
, vous avez un binaire 64 bits.
Afin de construire des binaires 32 bits sur un Linux 64 bits, vous avez besoin de passer -m32
à gcc. Vous devez également installer des bibliothèques 32 bits (sudo apt-get install libc6-dev-i386
).
Autres conseils
La machine de compilation n'a pas d'importance. Ce qui importe, c'est: le code est-il généré de 32 bits (réponse: oui) ou 64 bits (réponse: non).
Cela fonctionnera-t-il sur une machine 32 bits? Un avec un CPU qui ne prend pas en charge le mode 64 bits? Non.
Cela fonctionnera-t-il sur une machine virtuelle 64 bits sur un système d'exploitation natif 32 bits? Oui, d'après mon expérience.
Un résultat surprenant est que les machines virtuelles 64 bits peuvent être exécutées sous un système d'exploitation hôte 32 bits, à condition que le CPU soit capable et que vous ne voulez pas allouer trop de RAM (> 2G ou à peu près) à l'invité.