Назад | Перейти на главную страницу

Как узнать, использую ли я 32-разрядную или 64-разрядную версию Linux?

какую команду запускать в разных дистрибутивах?

"uname -m" - это команда, которую вы ищете. Вы можете запускать как 32-битные, так и 64-битные версии на современных процессорах Intel и AMD, поэтому "uname -p" вам не поможет (кроме того, в наши дни он в основном не работает, это здесь core2 считает ответ на "uname -p" "неизвестно").

Поиск наличия / usr / lib64 (как было предложено) также не поможет вам, поскольку некоторые пакеты, связанные с оборудованием и системой, на всякий случай устанавливают как 32-битные, так и 64-битные библиотеки. В моей системе (debian) пакет fakeroot делает именно это.

Что касается вывода «uname -m», если это i386 или i686, это 32-битный, если это x86_64 (или альфа, или ia64 или какая-то другая 64-битная архитектура, которую я никогда не видел :) это 64-битная.

(Помимо забавы, мой 64-битный сервер FreeBSD возвращает "amd64", что может быть немного странно для Intel Quadcore, но полностью понятно, если вы знаете историю 64-битной архитектуры x86)

uname -a и найдите x86_64. Если вы хотите узнать, может ли ваш процессор обрабатывать 64-битную версию, введите cat / proc / cpuinfo и найдите lm внутри флагов.

для RedHat / CentOS:

$ uname -a
Linux cs-centos 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 12:03:43 EST 2008 i686 athlon i386 GNU/Linux

32-битный

  • i686 и / или i386

64-битный

  • имел бы x86_64 в uname -a вывод

Чтобы запутать ситуацию, вы можете запустить 64-битное ядро ​​с 32-битной пользовательской средой, что я и делаю. В таком случае, uname -m возвращается x86_64 но у меня нет 64-битных библиотек, поэтому большинство 64-битных программ не запускаются.

Итак, как только вы проверите uname, вам нужно искать /lib64/ld-linux-x86-64.so.2, /lib64/libc-2.7.so и /lib/ld-linux.so.2, /lib/libc-2.7.so чтобы узнать, доступны ли 64-битные и 32-битные библиотеки. И чтобы действительно убедиться, запустите эти файлы и посмотрите, правильно ли они выполняются.

Еще одна полезная информация - вывод lsb_release -a который является кросс-дистрибутивным и будет сообщать, какие модули LSB для конкретной архитектуры доступны.

$> getconf LONG_BIT Ответ: 32 или 64.

Другой способ сделать это - спросить perl, какой компилятор сказал размер длинного целого числа:

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64

vs.

$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
32

Или, если у вас установлен gcc, то же самое в 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

:-)

Как дубликат:

Linux + как проверить версию linux 32 бит или 64 бит

uname -m даст вам только работающую «арку» / архитектуру ядра. Он НЕ сообщит вам, используете ли вы 32-битный дистрибутив GNU / Linux на 64-битном процессоре.

Чтобы узнать возможности вашего процессора:

 cat /proc/cpuinfo

Флаг «LM» должен присутствовать в 64-битных системах, поскольку он представляет «ДЛИННЫЙ РЕЖИМ» (64-битные расширения, AMD AMD64 или Intel EM64T).

$ uname -p

x86_64

Если у вас / usr / lib64, вы используете x86_64 ..

В команде Брэда Гилберта была ошибка Perl. Я исправил это, и команда ниже работает: cat / proc / cpuinfo | grep ^ flags | perl -e '$= <>; print ($? "x86_64 \ n": "не x86_64 \ n") '