quelle serait une commande pour courir dans différentes distributions?
"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, de sorte que "Uname -p" ne va pas vous aider (en outre cela ne fonctionne généralement pas ces jours-ci, ceci2 pense que Core2 pense que la réponse à "UName -P" est "inconnu").
À la recherche d'une existence de/usr/lib64 (comme on l'a suggéré) ne va pas vous aider 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 côté sûr. Sur mon système (Debian), le paquet Fakeroot fait exactement cela.
En ce qui concerne la sortie de "uname -m", si elle est i386 ou I686, c'est 32 bits, s'il s'agit de x86_64 (ou d'alpha, ou ia64 ou une autre architecture 64 bits que je n'ai jamais vue :) c'est 64 bits.
(comme un amusement de côté, mon serveur FreeBSD de 64 bits renvoie "AMD64", qui pourrait ê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 rechercher x86_64. Si vous voulez savoir si votre CPU peut gérer 64 bits, CAT/PROC/CPUINFO et rechercher LM dans les drapeaux.
$> getconf LONG_BIT
Réponse: 32 ou 64.
Juste pour confondre des choses, vous pouvez diriger un noyau de 64 bits avec une zone utiligne de 32 bits, ce que je fais. Dans ce cas, uname -m
Retour x86_64
Mais je n'ai aucune bibliothèque de 64 bits installée, la plupart des programmes de 64 bits ne seront pas exécutés.
Donc, une fois que vous avez vérifié 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 64 bits et 32 bits sont disponibles. Et pour vraiment vous assurer, exécutez ces fichiers et voyez s'ils exécutent correctement.
Une autre information utile est la sortie de lsb_release -a
qui est transversale et signalera quels modules LSB spécifiques à l'architecture sont disponibles.
pour Redhat/Centos:
$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux
2 bits
64 bits
Une autre façon de le faire est de demander à Perl quel compilateur a déclaré que la taille d'un long entiers est:
$ Perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
vs.
$ 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
vs.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
Comme un duplicata de:
Linux + comment vérifier la version Linux 32 bit ou 64 bits
Uname -m ne vous donnera que la course "arc"/architecture du noyau. Il ne vous dira pas si vous exécutez une distribution de 32 bits GNU/Linux sur une CPU capable de 64bits.
Pour connaître votre capacité de processeur:
cat /proc/cpuinfo
Le drapeau "LM" doit être présent dans des systèmes 64bits car il représente "mode long" (extensions 64 bits, AMD64 ou EM64T d'AMD).
$ uname -p
x86_64
Si vous avez/usr/lib64, vous exécutez x86_64 ..
Le commandement de Brad Gilbert avait un virus Perl. J'ai réparé et la commande ci-dessous fonctionne: CAT/PROC/CPUINFO | Grep ^ Drapeaux | Perl -e '$ = <>; impression ($? "X86_64\n": "pas x86_64\n")'