Мой процессор 64 или 32 бит?

41

Я нахожусь на Ubuntu, и я сделал эту команду:

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

Означает ли это, что я на 32-битном или 64-битном процессоре?

Причина, по которой я пытаюсь это выяснить, заключается в том, что я получаю ошибки, которые выглядели так:

cannot execute binary file

и из Google, я думал, что это проблема процессора. Любые идеи?

Genadinik
источник
Проверьте эту ссылку . Дано подробное описание вашей проблемы.
Prateek

Ответы:

32

Это означает, что вы работаете с 32-битным ядром, что означает, что вы можете запускать только 32-битные приложения без использования эмулятора или виртуализации.

Если вы хотите узнать, является ли ваш процессор 64-битным, ищите lmфлаги, перечисленные в /proc/cpuinfo.

Игнасио Васкес-Абрамс
источник
27
Также lscpuможно использовать и более дружелюбно.
энзотиб
@Ignacio Итак, у меня есть 32-битный процессор, который должен будет запускать что-то, что сделано для 64-битных. Это вообще возможно?
Genadinik
4
Я не Игнасио, но обычно это не так. Вы можете установить виртуальную машину, используя продукт, который позволяет вам эмулировать 64-битную систему или 32-битную платформу.
Эдуардо И.
Гораздо меньший вес, чем у виртуальной машины, - это контейнер chroot или lxc, связанный с QEMU. Все зависит от того, что вам нужно на самом деле.
Кен Шарп
84

Вы можете использовать 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

Дальнейшее объяснение области архитектуры:

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: поле архитектуры относится к ядру, а не к процессору. Я отредактировал свой ответ, чтобы сделать его более понятным.
Эрик Джонсон
7

Вы также можете проверить архитектуру двоичного файла, который вы пытаетесь запустить, используя файл: file filetocheck . Он будет упоминать либо 32-разрядный, либо 64-разрядный.

Эдуардо И.
источник
Это должно быть самое первое, что проверяется. Ken
Кен Шарп
3

Основная идея:

x86_64 - 64-битный процессор, а i386 - 32-битный.

С lscpu

Длинный ответ: 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

Краткий ответ lscpu | awk '/CPU op-mode/ {print}

Выход : CPU op-mode(s): 32-bit, 64-bit

С лшв

Длинный ответ: беги sudo lshw

Чуть короче ответ: sudo lshw -c cpu

Выход:

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

Еще более короткий ответ: sudo lshw -c cpu | grep width

Выход: width: 64 bits

Сергей Колодяжный
источник
2

uname -pдать архитектуру процессора. Если это дает x86_64, это означает, что процессор 64 бит.

Ананд
источник
1
Это не всегда правильно, правда.
Брайам
2
@Braiam: Было бы здорово, если бы вы могли объяснить, почему.
Jobin
5
@Jobin: uname печатает информацию о работающем ядре, а не о процессоре. Например, вы можете запустить 32-битное ядро ​​на 64-битном процессоре.
Кристиан Чиупиту
Это определенно неверно.
Кен Шарп