Дополнительно
Как определить, является ли данный Linux 32-битным или 64-битным?
Когда я ввожу uname -a
, он выдает следующий результат.
Linux mars 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:50:33 EDT 2008 i686 i686 i386 GNU/Linux
Как я могу узнать из этого, что данная ОС 32 или 64 битная?
Это полезно при написании скриптов configure
, например: для какой архитектуры я собираю?
466
20
Попробуйте
uname -m
. Что является сокращением отuname --machine
и выводит:В противном случае, не для ядра Linux, а для процессора, вы набираете:
или:
В параметре "флаги" вы увидите различные значения: см. "Что означают флаги в /proc/cpuinfo?" Среди них один называется
lm
:Long Mode
(x86-64: amd64, также известный как Intel 64, т.е. 64-битный)Или используя
lshw
(как упомянул ниже Rolf of Saxony), безsudo
(только для поиска ширины процессора):Примечание: вы можете иметь 64-битный процессор с установленным 32-битным ядром.
(как упоминает ysdx в своем ответе, "Сейчас система может быть multiarch, так что это не имеет смысла. Возможно, вы захотите найти цель компилятора по умолчанию")
Если бы вы работали на 64-битной платформе, вы бы увидели x86_64 или что-то похожее в выводе uname -a
Чтобы получить имя аппаратного обеспечения вашей конкретной машины, выполните следующие действия
Вы также можете вызвать
который возвращает либо 32, либо 64
lscpu
будет список этих среди другой информации, касающейся вашего процессора:в
Еще одна полезная команда для легкого определения, как показано ниже:
Команды:
Ответ:
Команда
эквивалентно
но в два раза быстрее набрать
Мне было интересно об этом специально для создания программного обеспечения в в Debian (установленная система Debian может быть 32-разрядной версии с 32 битное ядро, библиотеки и т. д. или это может быть 64-битная версия с материал скомпилирован для 64-бит вместо 32-битном режиме совместимости).
В Debian пакеты сами должны знать, что они для (Конечно же), когда они на самом деле создать пакет со всеми его метаданных, в том числе архитектуры платформы, так что есть упаковки средство, которое выводит его на другие упаковки инструментов и скриптов для использования, называется с dpkg-архитектура. Она включает в себя как, что это'ы настроены строить, а также текущего хоста. (Обычно это то же самое, хотя.) Пример выходных данных на 64-разрядном компьютере:
Вы можете печатать только одной из этих переменных или сделать тест против их значения с помощью параметров командной строки, чтобы с dpkg-архитектуры.
Я понятия не имею, как dpkg-архитектура выводит архитектуру, но вы можете посмотреть его документацию или исходный код (с помощью dpkg-архитектура и системы с dpkg вообще перл).
Если у вас 64-разрядная ОС, вместо i686 в, у вас x86_64 С " или " для ia64
в выходных данных выполнения команды
uname -а`. В том, что вы не имеете любой из этих двух строк; у вас 32-битная ОС (отметим, что это не означает, что ваш процессор не является 64-разрядной).Эта система 32-битная. iX86 в
uname
означает, что это 32-битная архитектура. Если бы она была 64-битной, то возвращаетсяВ настоящее время, система может быть мультиархитектурный так это все равно не имеет смысла. Вы хотите найти объект по умолчанию компилятора:
в <предварительно>$ куб. -в 2>&1 | команда grep ^цель Цель: архитектуру x86_64-ПК-ОС Linux-Н. </пред>
Вы можете попробовать составить Привет, мир!:
в <предварительно>$ Эхо 'int основной() { вернуть 0; }' | СС -х с - -о Фу файл $ ФОО фу: эльф 64-битный исполняемый ЛСБ, для архитектуры x86-64, Версия 1 (с SysV), динамически связаны, переводчик /lib64/ЛД-ОС Linux для архитектуры x86-64.так.2, для GNU/Линукс 2.6.32, BuildID[в SHA1]=b114e029a08abfb3c98db93d3dcdb7435b5bba0c, не раздели </пред>
В отношении ответ на "getconf LONG_BIT на".
Я написал простую функцию, чтобы сделать это 'С':
Хорошая идея, 'getconf'!
Вы также можете проверить с помощью переменной окружения:
Результат:
для i386
-> 32 битаархитектуру x86_64
-> 64 битДобывается из: http://www.sysadmit.com/2016/02/linux-como-saber-si-es-32-o-64-bits.html
В bash, используя целочисленное переполнение:
getconf использует наименьшее количество системных вызовов:
Если вы сдвиг 1 влево по 32 и вы получите 1, Ваша система является 32-разрядным. Если вы сдвиг 1 влево на 64, и вы получаете 1, Ваша система является 64-разрядной.
Другими словами,
если команда echo $((1<<32)) дает 1, то ваша система является 32-разрядным`.
`если команда echo $((1<<64)) дает 1, то ваша система является 64 битные.
Простой скрипт, чтобы получить 64 бит или 32 бит
Я могу'т верю, что за все это время никто не упомянул:
чтобы получить подробную информацию о скорости, количества, размера и возможностей аппаратных средств процессора.
[ -з uname-м
| грэп 64] &ампер;&ампер; Эхо "32-разрядные и" и quot || Эхо &; 64-битный, что"
Основываясь на том, что 64-битных обычно
x86_64 С
и 32-битi686 В
и т. д.Если сильно ограничен в существующих двоичных файлов (например, в пакет initramfs), мои коллеги предложили:
На мой АЛТ систем Linux, для i586 и
/Либ/ЛД-ОС Linux.так.2
и x86_64 есть/lib64/ЛД-ОС Linux для архитектуры x86-64.так.2`.