Команда Linux для возврата числа битов (32 или 64)?

Что такое команда Linux, которую я могу выполнить, чтобы программно возвратиться или 32 или 64, чтобы указать, является ли процессор процессором на 64 бита или на 32 бита?

13
задан 08.11.2010, 02:09

4 ответа

  • Вы видите, является ли ЦП 64-разрядным, 32-разрядным, или способным к обоим путем проверки flags строка в /proc/cpuinfo. Необходимо знать возможные флаги на семействе архитектуры. Например, на i386/amd64 платформах, lm флаг определяет amd64-способные центральные процессоры (центральные процессоры, которые не имеют того флага, i386-только).

    grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo    # Assuming a PC
    
  • Вы видите, является ли ядро 32-разрядным или 64-разрядным путем запросов архитектуры с uname -m. Например, i[3456]86 являются 32-разрядными в то время как x86_64 является 64-разрядным. Обратите внимание, что на нескольких архитектуре, 64-разрядное ядро может запустить 32-разрядные программы пространства пользователя, поэтому даже если uname -m показывает 64-разрядное ядро, нет никакой гарантии, что 64-разрядные библиотеки будут доступны.

    [ "$(uname -m)" = "x86_64" ]    # Assuming a PC
    

    Отметьте также это uname -m может возвратить “виртуализированное” значение. Например, в соответствии с Linux, если Вы работаете setarch i386 bash в amd64 системе, и Вы работаете uname -m от того удара Вы будете видеть uname -m создание отчетов i386. Это эффективно позволяет Вам притвориться, что Вы находитесь в “32-разрядной системе” даже при том, что ядро является 64-разрядным, например, для компиляции 32-разрядных программ, не настраивая кросс-компиляцию.

  • Вы видите то, что доступно в пространстве пользователя путем запросов поддержки LSB с lsb_release команда. Более точно, lsb_release -s печать a :- разделенный список поддерживавших функций LSB. Каждая функция имеет форму module-version-architecture. Например, доступность библиотеки ix86 C обозначается core-2.0-ia32, в то время как core-2.0-amd64 аналог для amd64. Не каждое распределение объявляет все доступные модули LSB, хотя, таким образом, больше может быть доступным, чем обнаруживаемо таким образом.

  • Можно узнать предпочтительный размер слова для разработки (предполагающий, что компилятор C доступен) путем компиляции программы C с 5 строками, которая печатает sizeof(void*) или sizeof(size_t).

13
ответ дан 07.12.2019, 11:33

Можно использовать uname -a и ищите x86_64 видеть, работаете ли Вы 64-разрядный. Что-либо еще (Насколько я знаю) и Вы работаете 32-разрядный, или Вы находитесь на некомпьютерных аппаратных средствах такой как alpha, sparc, или ppc64.

3
ответ дан 07.12.2019, 11:33
uname -m | sed 's/x86_//;s/i[3-6]86/32/'
2
ответ дан 07.12.2019, 11:33

Тип:

uname -a

Если Вы добираетесь x86_64 GNU/Linux Вы выполняете ядро на 64 бита. Если Вы получаете что-то подобное i386/i486/i586/i686 Вы по всей вероятности выполняете ядро на 32 бита

1
ответ дан 07.12.2019, 11:33

Теги

Похожие вопросы