"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)
cela vous indique-t-il l'architecture d'installation ou l'architecture réelle du processeur? Par exemple, si vous avez installé un système d'exploitation 32 bits sur un processeur 64 bits, cela retournerait-il i686 ou x86_64?
monkut
15
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 -mrenvoie x86_64mais 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.soet /lib/ld-linux.so.2, /lib/libc-2.7.sopour 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 -aqui est une distribution croisée et rapportera quels modules LSB spécifiques à l'architecture sont disponibles.
Cela vous indique simplement ce que fait la version par défaut de perl.
pjc50
@ pjc50: Et votre point est?
asjo
1
son point est que vous pourriez avoir un Perl 32 bits sur un système 64 bits
niXar
@niXar: Je suppose que c'est possible, mais avoir cela rendrait la distribution Linux assez étrange. Quoi qu'il en soit, utilisez alors la version C ;-)
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).
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)
la source
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.
la source
pour RedHat / CentOS:
32 bits
64 bits
la source
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
renvoiex86_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.la source
lsb_release -a
ne produit pas l'architecture de l'espace utilisateur$> getconf LONG_BIT
Réponse: 32 ou 64.la source
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:
contre.
Ou, si vous avez installé gcc, la même chose en C:
contre.
:-)
la source
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:
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).
la source
la source
Si vous avez / usr / lib64, vous exécutez x86_64 ..
la source
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")'
la source