Adakah yang tahu tentang perintah yang melaporkan apakah suatu sistem adalah Big Endian atau Little Endian, atau apakah opsi terbaik adalah teknik seperti ini menggunakan Perl atau serangkaian perintah?
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
metodenya? Sederhana dan berfungsi di mana-mana. Itu yang saya pikirkan sebelum membaca isi pertanyaan Anda.lscpu
Metode yang lebih baru lebih sesuai dengan yang saya harapkan.od
pendekatan harus bekerja pada kebanyakan sistem terbuka, tidak hanya linux, yang akan menjadi kasus dengan menggunakanlscpu
. Jadi apa yang "terbaik" tergantung pada keadaan.Jawaban:
lscpu
The
lscpu
perintah show (antara lain):Sistem yang dikenal berfungsi
Sistem ini diketahui tidak berfungsi
Mengapa perbedaan nyata di seluruh distro?
Setelah banyak menggali saya menemukan alasannya. Sepertinya versi util-linux versi 2.19 adalah versi pertama yang menyertakan fitur yang
lscpu
menunjukkan output melaporkan Endianness sistem Anda.Sebagai ujian saya mengkompilasi kedua versi 2.18 dan 2.19 pada sistem Fedora 14 saya dan output di bawah ini menunjukkan perbedaan:
util-linux 2.18
util-linux 2.19
Versi di atas diunduh dari situs web kernel.org .
sumber
lscpu
tidak menunjukkan nilai itu, namun sistem Ubuntu 12.10 saya tidak. Jika Anda tidak keberatan, saya mungkin mengambil jawaban Anda dan membaginya menjadi beberapa bagian untuk berbagai sistem dan cara untuk melakukannya pada masing-masing.lscpu
berfungsi di Archlinux juga.Salah satu metode yang saya temukan pada sistem Debian / Ubuntu adalah menjalankan perintah ini:
Ini akan menunjukkan kepada Anda kata-kata sedikit atau besar tergantung pada arsitektur sistem Anda terdiri dari:
sumber
Menggunakan
python
:atau:
di mana
1
untuk endian kecil dan00256
untuk big endian.Atau menggunakan
perl
versi yang lebih pendek :sumber
Solusi POSIX Shell & C:
sumber
Jika Anda menggunakan sistem yang tidak memiliki
endian.h
:sumber