Відповіді:
"uname -m" - це команда, яку ви шукаєте. На сучасних процесорах Intel та AMD ви можете запускати як 32-бітові, так і 64-бітні, тому "uname -p" вам не допоможе (крім того, в основному це не працює в наші дні. Тут Core2 вважає, що відповідь на "уні-р" є "невідомим").
Шукати існування / usr / lib64 (як було запропоновано) вам також не допоможе, оскільки деякі пакети, пов’язані з обладнанням та системою, встановлять як 32-бітові, так і 64-бітні бібліотеки, щоб вони були надійними. У моїй (debian) системі пакет fakeroot робить саме це.
Що стосується виходу "uname -m", якщо це i386 або i686, це 32-бітний, якщо це x86_64 (або альфа, або ia64 або якась інша 64-бітна архітектура, яку я ніколи не бачив :) - це 64 біт.
(як утіху, мій 64-бітовий сервер FreeBSD повертає "amd64", що може бути дещо дивним для Intel quadcore, але цілком зрозумілим, якщо ви знаєте історію 6486-бітової архітектури)
uname -a і шукайте x86_64. Якщо ви хочете дізнатися, чи може ваш процесор обробляти 64bit, cat / proc / cpuinfo та шукати lm у прапорах.
Для того, щоб заплутати речі, ви можете запустити 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 доступні.
lsb_release -a
, не виводиться архітектура userland
$> 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-бітне розширення, AMD64 AMD або Intel EM64T).
Якщо у вас є / usr / lib64, ви працюєте x86_64 ..
Команда Бреда Гілберта мала помилку. Я виправив це, і наведена нижче команда працює: cat / proc / cpuinfo | grep ^ прапори | perl -e '$ = <>; print ($ ? "x86_64 \ n": "не x86_64 \ n")'