Кто-нибудь знает команду, которая сообщает, является ли система Big Endian или Little Endian, или это лучший вариант такой техники, использующей Perl или строку команд?
Perl
# little
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
12345678
# big
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
87654321
од | AWK
# little
$ echo -n I | od -to2 | awk 'FNR==1{ print substr($2,6,1)}'
1
# big
$ echo -n I | od -to2 | awk 'FNR==1{ print substr($2,6,1)}'
0
od
методом? Это просто и работает везде. Это то, о чем я подумал, прежде чем прочесть основную часть вашего вопросаlscpu
метод - это больше, чем я ожидал.od
подход должен работать на большинстве открытых систем, не только Linux, которая была бы в случае с помощьюlscpu
. То, что «лучше», зависит от обстоятельств.Ответы:
lscpu
Команда
lscpu
показывает (среди прочего):Системы, на которых, как известно, работают
Системы, о которых известно, что они не работают
Почему очевидные различия между дистрибутивами?
После долгих раскопок я узнал почему. Похоже, версия util-linux версии 2.19 была первой версией, которая включала функцию, в которой
lscpu
показывались выходные данные, сообщающие о Endianness вашей системы.В качестве теста я скомпилировал обе версии 2.18 и 2.19 в своей системе Fedora 14, и в приведенных ниже результатах показаны различия:
util-linux 2.18
util-linux 2.19
Вышеуказанные версии были загружены с сайта kernel.org .
источник
lscpu
не показывает это значение, однако моя система Ubuntu 12.10 показывает. Если вы не возражаете, я мог бы взять ваш ответ и разделить его на разделы для различных систем и способов сделать это на каждой.lscpu
работает на Archlinux тоже.Использование
python
:или:
где
1
для прямого и младшего00256
порядкового номера.Или используя более короткую
perl
версию:источник
Один из методов, которые я нашел в системах Debian / Ubuntu, - это запустить эту команду:
Это покажет вам слова маленький или большой в зависимости от архитектуры вашей системы:
источник
Решение POSIX Shell & C:
источник
Если вы находитесь в системе, которая не имеет
endian.h
:источник