Debian.
"uname-m" является командой, которую Вы ищете. Можно выполнить и 32 бита и 64 бита в современный Intel и процессоры AMD, таким образом, "uname-p" не собирается помогать Вам (кроме того, он главным образом не работает в эти дни, это здесь core2 думает, что ответ на "uname-p" "неизвестен").
Поиск существования/usr/lib64 (как был предложен) не собирается помогать Вам также, так как некоторые аппаратные средства и связанные с системой пакеты установят и библиотеки на 64 бита и на 32 бита, чтобы быть на безопасной стороне. В моей (debian) системе fakeroot пакет делает просто это.
Что касается вывода "uname-m", если это - i386 или i686, это - 32 бита, если это - x86_64 (или альфа, или ia64 или некоторая другая архитектура на 64 бита, я никогда не видел :) это - 64 бита.
(как забава в стороне, мой сервер FreeBSD на 64 бита возвращает "amd64", который мог бы быть немного странным для Intel, четырехъядерного, но полностью понятного, если Вы знаете историю x86 архитектуры на 64 бита),
uname-a и ищут x86_64. Если Вы хотите знать, может ли Ваш ЦП обработать 64 бита, кошка/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
видеть, доступны ли библиотеки на 32 бита и на 64 бита. И действительно удостоверяться, петляйте и посмотрите, выполняются ли они правильно.
Другая полезная информация является выводом lsb_release -a
который является перекрестным дистрибутивом и сообщит, какие архитектурно-зависимые модули LSB доступны.
Другой способ сделать это состоит в том, чтобы спросить жемчуг, в каком компиляторе было сказано, что размер длинного целого:
$ perl -MConfig -e 'print $Config{longsize}*8 . "\n";'
64
по сравнению с.
$ 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
по сравнению с.
[...]
> EOC
$ gcc -Wall -o bits bits.c
$ ./bits
32
:-)
Если у Вас есть/usr/lib64, Вы выполняете x86_64..
Команда Brad Gilbert имела ошибку жемчуга. Я зафиксировал его и ниже работ команды: кошка/proc/cpuinfo | grep ^flags | жемчуг-e '$ = <>; печать ($? "x86_64\n": "не x86_64\n")'
Как дубликат:
Linux + как проверить версию Linux 32-битную или 64-битную
uname -m даст вам только работающую 'arch' / architecture ядра. Он НЕ сообщит вам, используете ли вы 32-битный дистрибутив GNU / Linux на 64-битном процессоре.
Чтобы узнать возможности вашего процессора:
cat /proc/cpuinfo
Флаг 'LM' должен присутствовать в 64-битных системах, поскольку он представляет 'ДЛИННЫЙ MODE '(64-битные расширения, AMD AMD64 или Intel EM64T).