470 votes

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

Quand je tape uname -a il donne le résultat suivant.

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 là que le système d'exploitation donné est 32 ou 64 bits ?

Ceci est utile pour écrire configure scripts, par exemple : pour quelle architecture suis-je en train de construire ?

736voto

VonC Points 414372

Essayez uname -m . Ce qui est court de uname --machine et il sort :

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, l'un se nomme lm : Long Mode ( x86-64 : amd64, également connu sous le nom d'Intel 64, c'est-à-dire capable de fonctionner en 64 bits)

lm ==> 64-bit processor

Ou en utilisant lshw (comme mentionné en dessous de par Rolf de Saxe ), sans sudo (juste pour gratter la largeur du processeur) :

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 Aujourd'hui, un système peut être multiarch donc cela n'a pas de sens de toute façon. Vous pourriez vouloir trouver la cible par défaut du compilateur")

3 votes

Grep flags /proc/cpuinfo vous indique seulement si le CPU est 64bit. Si je comprends bien la question, il s'agissait du système d'exploitation. uname -m ne m'indique que "i686".

0 votes

@Kim : vrai. J'ai mis à jour ma réponse pour refléter de manière adéquate la différence entre le noyau et le CPU.

3 votes

J'ai un noyau 32 bits sur un matériel 64 bits et j'obtiens "x86_64" par "uname -m" (sous Debian). La page de manuel de uname indique que -m indique le nom du matériel de la machine, ce qui semble correct.

155voto

Thomas Watnedal Points 2405

Si vous utilisez une plateforme 64 bits, vous verrez x86_64 ou quelque chose de très similaire dans le résultat de la commande uname -a

Pour obtenir le nom du matériel de votre machine spécifique, exécutez

uname -m

Vous pouvez également appeler

getconf LONG_BIT

qui renvoie soit 32 soit 64

4 votes

uname -m sorties x86_64 getconf LONG_BIT sorties 32 Lequel est le bon ?

10 votes

Cela signifie que le processeur est 64 bits, mais que vous n'avez installé qu'un système d'exploitation 32 bits sur celui-ci, alors que vous auriez pu utiliser un système 64 bits.

1 votes

Steve Kemp a raison, il faut donc être prudent (on pense notamment à Mac OS X 10.5 sur les MacBooks 2009, dont le système d'exploitation est 32 bits mais qui est capable d'exécuter des applications 64 bits).

44voto

asharma Points 1

lscpu énumérera ces informations parmi d'autres concernant votre CPU :

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

3 votes

Donne les capacités physiques de l'unité centrale, utile, mais pas fiable pour l'espace utilisateur actuel du système d'exploitation actuel.

0 votes

Totalement faux. La question est de savoir quel est le système d'exploitation utilisé. 42 votes positifs ? Je dépenserais bien un vote négatif mais ça se noierait.

34voto

user3207041 Points 1

Une autre commande utile pour une détermination facile est la suivante :

Commandement :

getconf LONG_BIT

Réponse :

  • 32, si le système d'exploitation est de 32 bits
  • 64, si le système d'exploitation est 64 bits

2 votes

Pas vrai dans le cas de HP-UX 11.31i sur Itanium 64 : cette commande renvoie 32.

0 votes

Je suppose que tout dépend de ce que la personne qui pose la question entend par "64 bits". Auparavant, ce terme désignait la taille naturelle des entiers, mais il est maintenant souvent utilisé pour désigner la taille d'adressage.

11voto

scotty Points 1
#include <stdio.h>

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

2 votes

Fonctionne mais semble être un détail d'implémentation de stdio.h sous Linux, de meilleures solutions existent, par exemple : limits.h, NE PAS UTILISER.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X