Kennt jemand einen Befehl, der meldet, ob es sich bei einem System um Big Endian oder Little Endian handelt, oder ist die beste Option eine Technik wie diese, die Perl oder eine Folge von Befehlen verwendet?
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
Methode? Es ist einfach und funktioniert überall. Ich habe darüber nachgedacht, bevor ich Ihre Frage gelesen habe.lscpu
Methode ist mehr, als ich erwarten würde.od
Ansatz sollte auf den meisten offenen Systemen funktionieren, nicht nur auf Linux, was bei der Verwendung der Fall wärelscpu
. Was also "am besten" ist, hängt von den Umständen ab.Antworten:
lscpu
Der
lscpu
Befehl zeigt (unter anderem):Systeme, auf denen dies bekanntermaßen funktioniert
Systeme, auf denen dies bekanntermaßen nicht funktioniert
Warum die offensichtlichen Unterschiede zwischen den Distributionen?
Nach langem Graben fand ich heraus warum. Es sieht so aus, als ob die Version util-linux 2.19 die erste Version war, die die Funktion enthielt, mit der
lscpu
Sie die Ausgabe sehen können, die die Endianität Ihres Systems meldet.Als Test habe ich beide Versionen 2.18 und 2.19 auf meinem Fedora 14-System kompiliert und die folgende Ausgabe zeigt die Unterschiede:
util-linux 2.18
util-linux 2.19
Die obigen Versionen wurden von der kernel.org-Website heruntergeladen .
quelle
lscpu
wird dieser Wert nicht angezeigt, auf meinem Ubuntu 12.10-System jedoch. Wenn es Ihnen nichts ausmacht, kann ich Ihre Antwort in Abschnitte für die verschiedenen Systeme und Vorgehensweisen aufteilen.lscpu
funktioniert auch auf Archlinux.Eine Methode, die ich auf Debian / Ubuntu-Systemen gefunden habe, ist, diesen Befehl auszuführen:
Dies zeigt Ihnen die Wörter "klein" oder "groß", abhängig von der Architektur, aus der Ihr System besteht:
quelle
Verwenden von
python
:oder:
Wo
1
ist für Little Endian und00256
für Big Endian.Oder mit einer kürzeren
perl
Version:quelle
Eine POSIX Shell & C-Lösung:
quelle
Wenn Sie sich auf einem System befinden, das nicht über Folgendes verfügt
endian.h
:quelle