Quelqu'un connaît-il une commande qui signale si un système est Big Endian ou Little Endian, ou est-ce que la meilleure option est une technique comme celle-ci utilisant Perl ou une chaîne de commandes?
Perl
# little
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
12345678
# big
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
87654321
od | 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
méthode? C'est simple et fonctionne partout. C'est ce à quoi j'ai pensé avant de lire le corps de votre question.lscpu
méthode est plus ce à quoi je m'attendrais.od
approche devrait fonctionner sur la plupart des systèmes ouverts, pas seulement sur linux, ce qui serait le cas avec l'utilisationlscpu
. Donc, ce qui est "meilleur" dépend des circonstances.Réponses:
lscpu
La
lscpu
commande affiche (entre autres):Systèmes sur lesquels on sait qu'ils fonctionnent
Systèmes connus pour ne pas fonctionner
Pourquoi les différences apparentes entre les distributions?
Après beaucoup de fouilles, j'ai découvert pourquoi. Il semble que la version util-linux version 2.19 soit la première version à inclure la fonctionnalité qui
lscpu
vous montre la sortie signalant l'endianité de votre système.Comme test, j'ai compilé les versions 2.18 et 2.19 sur mon système Fedora 14 et la sortie ci-dessous montre les différences:
util-linux 2.18
util-linux 2.19
Les versions ci-dessus ont été téléchargées à partir du site Web kernel.org .
la source
lscpu
n'affiche pas cette valeur, contrairement à mon système Ubuntu 12.10. Si cela ne vous dérange pas, je pourrais prendre votre réponse et la diviser en sections pour les différents systèmes et les façons de le faire sur chacun.lscpu
fonctionne également sur Archlinux.En utilisant
python
:ou:
où
1
est pour petit endian et00256
pour big endian.Ou en utilisant une
perl
version plus courte :la source
Une méthode que j'ai trouvée sur les systèmes Debian / Ubuntu consiste à exécuter cette commande:
Cela vous montrera les mots petits ou grands selon l'architecture de votre système est composé de:
la source
Une solution POSIX Shell & C:
la source
Si vous êtes sur un système qui n'a pas
endian.h
:la source