-
Vous pouvez voir si le CPU est 64 bits, 32 bits ou capable des deux en vérifiant le
flags
ligne en/proc/cpuinfo
. Vous devez connaître les drapeaux possibles sur votre famille d'architecture. Par exemple, sur les plateformes i386/amd64, lelm
L'indicateur identifie les processeurs compatibles amd64 (les processeurs qui n'ont pas cet indicateur sont i386 uniquement).grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
-
Vous pouvez voir si le noyau est 32 bits ou 64 bits en interrogeant l'architecture avec
uname -m
. Par exemple,i[3456]86
sont 32 bits tandis quex86_64
est 64 bits. Notez que sur plusieurs architectures, un noyau 64 bits peut exécuter des programmes utilisateur 32 bits, donc même si leuname -m
montre un noyau 64 bits, il n'y a aucune garantie que les bibliothèques 64 bits seront disponibles.[ "$(uname -m)" = "x86_64" ] # Assuming a PC
Notez également que
uname -m
peut renvoyer une valeur "virtualisée". Par exemple, sous Linux, si vous exécutezsetarch i386 bash
sur un système amd64, et vous exécutezuname -m
à partir de ce bash, vous verrezuname -m
rapporti386
. Cela vous permet effectivement de prétendre que vous êtes sur un "système 32 bits" même si le noyau est un 64 bits, par exemple pour compiler des programmes 32 bits sans mettre en place une compilation croisée. -
Vous pouvez voir ce qui est disponible en userland en interrogeant le support LSB avec le
lsb_release
commande. Plus précisément,lsb_release -s
imprime un:
- liste séparée des fonctionnalités LSB prises en charge. Chaque caractéristique a la formemodule-version-architecture
. Par exemple, la disponibilité d'une bibliothèque C ix86 est indiquée parcore-2.0-ia32
, tandis quecore-2.0-amd64
est l'analogique pour amd64. Cependant, toutes les distributions ne déclarent pas tous les modules LSB disponibles, il peut donc y en avoir plus que ce qui est détectable de cette manière. -
Vous pouvez trouver la taille de mot préférée pour le développement (en supposant qu'un compilateur C est disponible) en compilant un programme C de 5 lignes qui imprime
sizeof(void*)
ousizeof(size_t)
.
Vous pouvez utiliser uname -a
et recherchez x86_64
pour voir si vous utilisez 64 bits. Tout le reste (pour autant que je sache) et vous utilisez 32 bits ou vous êtes sur du matériel non PC tel que alpha
, sparc
, ou ppc64
.
uname -m | sed 's/x86_//;s/i[3-6]86/32/'