Question Comment déterminer si un Linux donné est 32 bits ou 64 bits?


Quand je tape uname -a, il donne la sortie suivante.

Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux

Comment puis-je savoir à partir de cela que le système d'exploitation donné est 32 ou 64 bits?

Ceci est utile lors de l'écriture configure scripts, par exemple: pour quelle architecture je construis?


460
2017-10-29 07:06


origine


Réponses:


Essayer uname -m. Qui est à court de uname --machine et il produit:

x86_64 ==> 64-bit kernel
i686   ==> 32-bit kernel

Autrement, pas pour le noyau Linux, mais pour le CPU, vous tapez:

cat /proc/cpuinfo

ou:

grep flags /proc/cpuinfo

Sous le paramètre "flags", vous verrez différentes valeurs: voir "Que signifient les drapeaux dans / proc / cpuinfo?" Parmi eux, un est nommé lm: Long Mode (x86-64: amd64, également appelé Intel 64, c'est-à-dire compatible 64 bits)

lm ==> 64-bit processor

Ou en utilisant lshw (comme mentionné au dessous de par Rolf de Saxe), sans pour autant sudo (juste pour grepping la largeur de cpu):

lshw -class cpu|grep "^       width"|uniq|awk '{print $2}'

Note: vous pouvez avoir un processeur 64 bits avec un noyau 32 bits installé.
(comme ysdx mentions dans sa propre réponse"De nos jours, un système peut être multiarchie alors ça n'a pas de sens de toute façon. Vous pourriez vouloir trouver la cible par défaut du compilateur ")


721



Si vous utilisiez une plate-forme 64 bits, vous verriez x86_64 ou quelque chose de très similaire dans la sortie de ton nom -une

Pour exécuter le nom de votre machine spécifique

uname -m

Vous pouvez également appeler

getconf LONG_BIT

qui renvoie soit 32 ou 64


151



lscpu va lister ces informations parmi d’autres concernant votre CPU:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
...

41



Une autre commande utile pour la détermination facile est comme ci-dessous:

Commander:

getconf LONG_BIT

Répondre:

  • 32, si OS est 32 bits
  • 64, si OS est 64 bit

31



La commande

$ arch    

est équivalent à

$ uname -m

mais est deux fois plus rapide à taper


11



Je me demandais à ce sujet spécifiquement pour la construction de logiciels dans Debian (le système Debian installé peut être une version 32 bits avec un noyau de 32 bits, des bibliothèques, etc., ou bien une version 64 bits compilée pour le mode de compatibilité 64 bits plutôt que 32 bits).

Les paquets Debian eux-mêmes ont besoin de savoir à quelle architecture ils sont destinés (bien sûr) quand ils créent le paquet avec toutes ses métadonnées, y compris l'architecture de plate-forme, donc il y a un outil de packaging dpkg-architecture. Il inclut à la fois ce qu'il est configuré pour générer, ainsi que l'hôte actuel. (Normalement, ce sont les mêmes.) Exemple de sortie sur une machine 64 bits:

DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu

Vous pouvez imprimer une seule de ces variables ou faire un test avec leurs valeurs avec des options de ligne de commande pour dpkg-architecture.

Je ne sais pas comment dpkg-architecture déduit l'architecture, mais vous pouvez regarder sa documentation ou son code source (dpkg-architecture et une grande partie du système dpkg en général est Perl).


10



#include <stdio.h>

int main(void)
{
    printf("%d\n", __WORDSIZE);
    return 0;
}

10