Il mio processore è a 64 o 32 bit?


41

Sono su Ubuntu e ho fatto questo comando:

$ uname -a
Linux slabrams-desktop 2.6.32-29-generic #58-Ubuntu SMP Fri Feb 11 19:00:09 UTC 2011 i686 GNU/Linux

Significa che sono su un processore a 32 bit o 64 bit?

Il motivo per cui sto cercando di capire questo è che stavo ricevendo errori che assomigliavano a questo:

cannot execute binary file

e da Google, ho pensato che fosse un problema con il processore. Qualche idea?


Dai un'occhiata a questo link . Viene fornita una descrizione dettagliata del problema.
Prateek,

Risposte:


32

Significa che stai eseguendo un kernel a 32 bit, il che significa che puoi eseguire solo app a 32 bit senza l'uso di un emulatore o virtualizzazione.

Se vuoi vedere se il tuo processore è a 64 bit, cerca lmtra i flag elencati in /proc/cpuinfo.


27
Inoltre lscpupuò essere usato ed è più amichevole.
enzotib,

@Ignacio Quindi ho un processore a 32 bit che dovrà eseguire qualcosa creato per 64 bit. È possibile?
Genadinik,

4
Non sono Ignacio, ma generalmente non lo è. Tuttavia, è possibile installare una macchina virtuale utilizzando un prodotto che consente di emulare un sistema a 64 bit o una piattaforma a 32 bit.
Eduardo I.

Un peso molto più leggero di una VM è un chroot o un contenitore lxc accoppiato con QEMU. Tutto dipende da ciò di cui hai davvero bisogno.
Ken Sharp,

84

È possibile utilizzare lscpu.

someuser@somelaptop:~$ lscpu
Architecture:          i686           # <-- your kernel is 32 bit
CPU op-mode(s):        32-bit, 64-bit # <-- your cpu can handle 32 or 64 bit instructions
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               1199.000
Virtualisation:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K

Ulteriore spiegazione del campo dell'architettura:

X86, i686, or i386      means you are running a 32 bit kernel.
X86_64 , amd64 , or X64 means you are running a 64 bit kernel.

1
@slm: il campo dell'architettura si riferisce al kernel e non al processore. Ho modificato la mia risposta per renderlo più chiaro.
Eric Johnson,

7

È inoltre possibile controllare l'architettura del binario si sta cercando di eseguire utilizzando il file: file filetocheck. Citerà 32 bit o 64 bit.


Questa dovrebbe essere la prima cosa che viene controllata. 👍
Ken Sharp,

3

Idea base:

x86_64 è CPU a 64 bit e i386 a 32 bit.

Con lscpu

Risposta lunga: lscpu

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            17
Model:                 3
Stepping:              1
CPU MHz:               550.000
BogoMIPS:              4397.92
Virtualization:        AMD-V
L1d cache:             64K
L1i cache:             64K
L2 cache:              512K
NUMA node0 CPU(s):     0,1

Risposta breve lscpu | awk '/CPU op-mode/ {print}

Produzione : CPU op-mode(s): 32-bit, 64-bit

Con lshw

Risposta lunga: corri sudo lshw

Risposta leggermente più breve: sudo lshw -c cpu

Produzione:

 *-cpu                   
       description: CPU
       product: AMD Turion(tm) X2 Dual-Core Mobile RM-75
       vendor: Advanced Micro Devices [AMD]
       physical id: 4
       bus info: cpu@0
       version: Turion X2 Mobile RM-75
       slot: Socket M2/S1G1
       size: 550MHz
       capacity: 4GHz
       width: 64 bits
       clock: 200MHz
       capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp x86-64 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch osvw skinit hw_pstate lbrv svm_lock nrip_save vmmcall cpufr

Risposta ancora più breve: sudo lshw -c cpu | grep width

Produzione: width: 64 bits


2

uname -pdare l'architettura del processore. Se dà x86_64, significa che cpu è a 64 bit.


1
Questo non è sempre giusto, però.
Braiam,

2
@Braiam: Sarebbe bello se tu potessi spiegare il perché.
Jobin

5
@Jobin: uname stampa le informazioni relative al kernel in esecuzione, non alla CPU. Ad esempio è possibile eseguire un kernel a 32 bit su una CPU a 64 bit.
Cristian Ciupitu,

Questo è decisamente errato.
Ken Sharp,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.