Réponses:
"uname -m" est la commande que vous recherchez. Vous pouvez exécuter à la fois 32 bits et 64 bits sur des processeurs Intel et AMD modernes, donc "uname -p" ne va pas vous aider (en plus cela ne fonctionne généralement pas de nos jours, ici core2 pense que la réponse à "uname -p" est "inconnu").
La recherche de l'existence de / usr / lib64 (comme cela a été suggéré) ne vous aidera pas non plus, car certains packages liés au matériel et au système installeront des bibliothèques 32 bits et 64 bits pour être du bon côté. Sur mon système (debian), le paquet fakeroot fait exactement cela.
Quant à la sortie de "uname -m", si c'est i386 ou i686 c'est 32 bits, si c'est x86_64 (ou alpha, ou ia64 ou une autre architecture 64 bits que je n'ai jamais vu :) c'est 64 bits.
(pour le plaisir, mon serveur FreeBSD 64 bits renvoie "amd64", ce qui peut être un peu étrange pour un quadcore Intel mais totalement compréhensible si vous connaissez l'histoire de l'architecture x86 64 bits)
uname -a et recherchez x86_64. Si vous voulez savoir si votre CPU peut gérer 64 bits, cat / proc / cpuinfo et recherchez lm dans les drapeaux.
Juste pour confondre les choses, vous pouvez exécuter un noyau 64 bits avec un espace utilisateur 32 bits, ce que je fais. Dans ce cas, uname -m
renvoie x86_64
mais je n'ai pas de bibliothèques 64 bits installées, donc la plupart des programmes 64 bits ne fonctionneront pas.
Donc , une fois que vous vérifiez uname, vous devez rechercher /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
et /lib/ld-linux.so.2
, /lib/libc-2.7.so
pour voir si les bibliothèques 64bit et 32bit sont disponibles. Et pour vous en assurer, exécutez ces fichiers et voyez s'ils s'exécutent correctement.
Une autre information utile est la sortie lsb_release -a
qui est une distribution croisée et rapportera quels modules LSB spécifiques à l'architecture sont disponibles.
lsb_release -a
ne produit pas l'architecture de l'espace utilisateur
$> getconf LONG_BIT
Réponse: 32 ou 64.
Une autre façon de le faire est de demander à perl ce que le compilateur a dit que la taille d'un entier long est:
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
contre.
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32
Ou, si vous avez installé gcc, la même chose en C:
$ cat > bits.c <<EOC
> #include <stdlib.h>
> #include <stdio.h>
>
> int main(void) {
> printf("%d\n", (int)sizeof(long)*8);
>
> exit(0);
> }
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
64
contre.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
En double de:
Linux + comment vérifier la version linux 32 bits ou 64 bits
uname -m ne vous donnera que l '«arch» / architecture en cours d'exécution du noyau. Il ne vous dira PAS si vous exécutez une distribution GNU / Linux 32 bits sur un processeur capable de 64 bits.
Pour connaître vos capacités CPU:
cat /proc/cpuinfo
Le drapeau «LM» devrait être présent dans les systèmes 64 bits car il représente le «MODE LONG» (extensions 64 bits, AMD64 d'AMD ou EM64T d'Intel).
$ uname -p
x86_64
Si vous avez / usr / lib64, vous exécutez x86_64 ..
La commande de Brad Gilbert avait un bug perl. Je l'ai corrigé et la commande ci-dessous fonctionne: cat / proc / cpuinfo | grep ^ drapeaux | perl -e '$ = <>; print ($ ? "x86_64 \ n": "not x86_64 \ n")'