Ответы:
"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 в пределах флагов.
Просто чтобы запутать вещи, вы можете запустить 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
, не выводит пользовательскую архитектуру
$> getconf LONG_BIT
Ответ: 32 или 64.
Еще один способ сделать это - спросить Perl, какой компилятор сказал, что размер длинного целого числа:
$ 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
:-)
Как дубликат:
Linux + как проверить версию 32-битной или 64-битной Linux
uname -m выдаст вам только запущенную архитектуру / архитектуру ядра. Он НЕ скажет вам, используете ли вы 32-битный дистрибутив GNU / Linux на 64-битном процессоре.
Чтобы узнать ваши возможности процессора:
cat /proc/cpuinfo
Флаг «LM» должен присутствовать в 64-битных системах, поскольку он представляет «LONG MODE» (64-битные расширения, AMD64 или Intel EM64T).
$ uname -p
x86_64
Если у вас есть / usr / lib64, вы используете x86_64 ..
У команды Брэда Гилберта была ошибка perl. Я исправил это, и работает следующая команда: cat / proc / cpuinfo | grep ^ flags | perl -e '$ = <>; print ($ ? "x86_64 \ n": "not x86_64 \ n")'