Risposte:
"uname -m" è il comando che stai cercando. Puoi eseguire sia 32 bit sia 64 bit su processori Intel e AMD moderni, quindi "uname -p" non ti aiuterà (inoltre, per lo più non funziona in questi giorni, qui core2 pensa la risposta a "uname -p" è sconosciuto").
Cercare l'esistenza di / usr / lib64 (come è stato suggerito) non ti aiuterà neanche, poiché alcuni pacchetti hardware e di sistema installeranno librerie a 32 e 64 bit per essere al sicuro. Sul mio sistema (debian) il pacchetto fakeroot fa proprio questo.
Per quanto riguarda l'output di "uname -m", se è i386 o i686 è 32 bit, se è x86_64 (o alpha, o ia64 o qualche altra architettura a 64 bit che non ho mai visto :) è 64 bit.
(a parte il divertimento, il mio server FreeBSD a 64 bit restituisce "amd64", che potrebbe essere un po 'strano per un quad core Intel ma del tutto comprensibile se conosci la storia dell'architettura x86 a 64 bit)
uname -a e cerca x86_64. Se vuoi sapere se la tua CPU è in grado di gestire 64 bit, cat / proc / cpuinfo e cerca lm tra le bandiere.
Solo per confondere le cose, puoi eseguire un kernel a 64 bit con una userland a 32 bit, che è quello che sto facendo. In questo caso, uname -m
ritorna x86_64
ma non ho alcuna libreria a 64 bit installata, quindi la maggior parte dei programmi a 64 bit non funzionerà.
Quindi una volta che si controlla uname, è necessario cercare /lib64/ld-linux-x86-64.so.2
, /lib64/libc-2.7.so
e /lib/ld-linux.so.2
, /lib/libc-2.7.so
per vedere se 64bit e 32bit librerie sono disponibili. E per essere sicuro, esegui quei file e vedi se funzionano correttamente.
Un'altra utile informazione è l'output lsb_release -a
che è cross-distro e riporterà quali moduli LSB specifici dell'architettura sono disponibili.
lsb_release -a
non produce l'architettura userland
$> getconf LONG_BIT
Risposta: 32 o 64.
Un altro modo per farlo è chiedere a perl quale compilatore ha detto che la dimensione di un intero lungo è:
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
vs.
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32
Oppure, se hai installato gcc, lo stesso in 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
:-)
Come duplicato di:
Linux + come verificare la versione di Linux a 32 bit o 64 bit
uname -m ti darà solo l'architettura / arco del kernel in esecuzione. NON ti dirà se stai eseguendo una distribuzione GNU / Linux a 32 bit su una CPU con capacità a 64 bit.
Per conoscere la tua capacità della CPU:
cat /proc/cpuinfo
Il flag "LM" dovrebbe essere presente nei sistemi a 64 bit in quanto rappresenta "LONG MODE" (estensioni a 64 bit, AMD64 AMD64 o Intel EM64T).
Se hai / usr / lib64 stai eseguendo x86_64 ..
Il comando di Brad Gilbert aveva un bug perl. L'ho corretto e il comando seguente funziona: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "non x86_64 \ n")'