La réponse à la question dans le titre se trouve juste au début de la sortie:
Exécutable ELF 64 bits LSB, x86-64
ELF est le format exécutable et linkable , le format de fichier exécutable binaire le plus couramment utilisé par Linux.
x86-64 est l'architecture du binaire, la version 64 bits du jeu d'instructions x86 introduit à l'origine par AMD . Pour des raisons qui me dépassent, Microsoft l'appelle "x64", mais c'est la même chose.
Si vous avez besoin de connaître l'architecture du noyau lui-même, vous pouvez l'utiliser uname -mpi
. Par exemple, sur mon système, qui imprime:
x86_64 inconnu inconnu
ce qui signifie que j'utilise un noyau x86-64.
Si vous êtes intéressé par le CPU lui-même, consultez les /proc/cpuinfo
détails sur les CPU détectés par le noyau Linux.
Un exécutable 32x 80x86 est identifié par file
, par exemple:
Exécutable ELF 32 bits LSB, Intel 80386 , version 1 (SYSV), lié dynamiquement (utilise des bibliothèques partagées), pour GNU / Linux 2.6.8, supprimé
ce qui nous indique qu'il s'agit d'un exécutable 32 bits utilisant le jeu d'instructions Intel 80386 (éventuellement avec des extensions).
Notez qu'il n'est pas aussi simple que les architectures 32 bits contre 64 bits. Par exemple, le noyau Linux prend en charge les architectures 32 bits comme Intel 80386, AVR32 , S / 390 et Unicore32 . Du côté 64 bits, Linux est utilisable sur PA-RISC , x86-64, Itanium et Alpha , entre autres. Cependant, toutes les distributions ne fournissent pas de binaires pour toutes les architectures (et je doute qu'il existe des distributions qui ciblent également toutes les architectures CPU prises en charge). Donc, si vous voulez savoir si un binaire donné sera exécutable sur un système donné, vous devez considérer l' architecture , plutôt que la taille du mot natif du CPU.
Le 5ème octet d'un fichier exécutable binaire Linux ( format ELF, voir Wikipedia ) est 1 pour un exécutable 32 bits, 2 pour un exécutable 64 bits.
Pour voir cela pour un programme nommé "foo", tapez sur la ligne de commande
la source
Si vous voulez éviter le tuyau «tête», vous pouvez le faire
Cela affichera 01 si foo est un binaire 32 bits et 02 s'il est 64. Il peut toujours inclure des espaces de tête - à savoir si vous faites des comparaisons automatisées sur les résultats.
Si cela est utile dans un conteneur Ubuntu Docker de base où «fichier» n'a pas été installé.
la source