Ist mein Prozessor 64 oder 32 Bit?

41

Ich bin auf Ubuntu und habe diesen Befehl ausgeführt:

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

Bedeutet das, dass ich einen 32-Bit- oder 64-Bit-Prozessor verwende?

Der Grund, warum ich dies herauszufinden versuche, ist, dass ich Fehler erhielt, die so aussahen:

cannot execute binary file

und von Googeln dachte ich, es sei ein Prozessorproblem. Irgendwelche Ideen?

Genadinik
quelle
Schauen Sie sich diesen Link an . Eine detaillierte Beschreibung Ihres Problems wird gegeben.
Prateek

Antworten:

32

Dies bedeutet, dass Sie einen 32-Bit-Kernel ausführen. Dies bedeutet, dass Sie nur 32-Bit-Apps ohne die Verwendung eines Emulators oder einer Virtualisierung ausführen können.

Wenn Sie sehen möchten, ob Ihr Prozessor 64-Bit ist, suchen Sie lmin den Flags, die in aufgeführt sind /proc/cpuinfo.

Ignacio Vazquez-Abrams
quelle
27
Auch lscpukann verwendet werden, und ist freundlich.
Enzotib
@Ignacio Ich habe also einen 32-Bit-Prozessor, auf dem etwas laufen muss, das für 64-Bit ausgelegt ist. Ist das überhaupt möglich
Genadinik
4
Ich bin nicht Ignacio, aber im Allgemeinen ist es nicht. Sie können eine VM mithilfe eines Produkts installieren, mit dem Sie ein 64-Bit-System oder eine 32-Bit-Plattform emulieren können.
Eduardo I.
Ein viel geringeres Gewicht als eine VM ist entweder ein Chroot- oder ein LXC-Container, der mit QEMU gepaart ist. Alles hängt davon ab, was Sie wirklich brauchen.
Ken Sharp
84

Sie können verwenden 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

Weitere Erklärung des Architekturfeldes:

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.
Eric Johnson
quelle
1
@slm: Das Architekturfeld bezieht sich auf den Kernel, nicht auf den Prozessor. Ich habe meine Antwort bearbeitet, um sie klarer zu machen.
Eric Johnson
7

Sie können die Architektur der Binärdatei, die Sie ausführen möchten, auch mit file: überprüfen file filetocheck. Es wird entweder 32-Bit oder 64-Bit erwähnt.

Eduardo I.
quelle
Dies sollte das allererste sein, was überprüft wird. 👍
Ken Sharp
3

Grundidee:

x86_64 ist 64-Bit-fähige CPU und i386 ist 32-Bit.

Mit lscpu

Lange Antwort: 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

Kurze Antwort lscpu | awk '/CPU op-mode/ {print}

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

Mit lshw

Lange Antwort: laufen sudo lshw

Etwas kürzere Antwort: sudo lshw -c cpu

Ausgabe:

 *-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

Noch kürzere Antwort: sudo lshw -c cpu | grep width

Ausgabe: width: 64 bits

Sergiy Kolodyazhnyy
quelle
2

uname -pGeben Sie die Architektur des Prozessors an. Wenn es gibt x86_64, bedeutet dies, dass die CPU 64-Bit ist.

Anand
quelle
1
Das ist nicht immer richtig.
Braiam
2
@Braiam: Wäre toll, wenn du erklären könntest warum.
Jobin
5
@Jobin: uname gibt Informationen zum laufenden Kernel aus, nicht zur CPU. Beispielsweise können Sie einen 32-Bit-Kernel auf einer 64-Bit-CPU ausführen.
Cristian Ciupitu
Das ist definitiv falsch.
Ken Sharp