Jawaban atas pertanyaan di judul ada di awal output:
ELF 64-bit LSB dapat dieksekusi, x86-64
ELF adalah Format yang Dapat Dieksekusi dan Dapat Ditautkan, format file yang dapat dieksekusi biner yang paling umum digunakan oleh Linux.
x86-64 adalah arsitektur biner, versi 64-bit dari set instruksi x86 yang awalnya diperkenalkan oleh AMD. Untuk alasan yang tidak saya ketahui, Microsoft menyebutnya sebagai "x64", tetapi itu adalah hal yang sama.
Jika Anda perlu mengetahui arsitektur kernel itu sendiri, Anda dapat menggunakan uname -mpi
. Misalnya, di sistem saya, yang mencetak:
x86_64 tidak diketahui tidak diketahui
yang berarti saya menjalankan kernel x86-64.
Jika Anda tertarik dengan CPU itu sendiri, lihat /proc/cpuinfo
untuk detail tentang CPU yang terdeteksi oleh kernel Linux.
Eksekusi 32-bit 80x86 diidentifikasi oleh file
sebagai, misalnya:
ELF 32-bit Dapat dieksekusi LSB, Intel 80386 , versi 1 (SYSV), ditautkan secara dinamis (menggunakan lib bersama), untuk GNU/Linux 2.6.8, dihapus
yang memberi tahu kita bahwa ini adalah 32-bit yang dapat dieksekusi menggunakan set instruksi Intel 80386 (mungkin dengan ekstensi).
Perhatikan bahwa ini tidak sesederhana arsitektur 32-bit versus 64-bit. Misalnya, kernel Linux mendukung arsitektur 32-bit seperti Intel 80386, AVR32, S/390 dan Unicore32. Di sisi 64-bit, Linux dapat digunakan di PA-RISC, x86-64, Itanium dan Alpha, antara lain. Namun, tidak semua distribusi menyediakan binari untuk semua arsitektur (dan saya ragu ada distribusi yang menargetkan semua mendukung arsitektur CPU secara merata). Jadi, jika Anda ingin mengetahui apakah biner tertentu dapat dieksekusi pada sistem tertentu, Anda perlu mempertimbangkan arsitektur , bukan ukuran kata asli CPU.
Byte ke-5 dari file yang dapat dieksekusi biner Linux (format ELF, lihat Wikipedia) adalah 1 untuk file yang dapat dieksekusi 32 bit, 2 untuk file yang dapat dieksekusi 64 bit.
Untuk melihat program bernama "foo", ketik di baris perintah
od -t x1 -t c foo | head -n 2
Jika Anda ingin menghindari pipa 'kepala', Anda dapat melakukannya
od -An -t x1 -j 4 -N 1 foo
Ini akan mencetak 01 jika foo adalah biner 32-bit dan 02 jika 64. Ini mungkin masih menyertakan beberapa spasi awal - perlu diketahui jika Anda melakukan perbandingan otomatis pada hasilnya.
Jika ternyata ini berguna dalam wadah Docker Ubuntu dasar di mana 'file' tidak diinstal.