Saya mengerti bahwa Linux menggunakan baris shebang untuk menentukan penerjemah apa yang akan digunakan untuk bahasa scripting, tetapi bagaimana cara kerjanya untuk binari?
Maksud saya, saya dapat menjalankan binari Linux, dan setelah menginstal anggur dan mono , Windows asli dan .NET binari. Dan bagi mereka semua itu hanya ./binary-name
(jika tidak di PATH) untuk menjalankannya.
Bagaimana Linux menentukan bahwa biner yang diberikan harus dijalankan sebagai biner asli Linux, sebagai biner asli Windows (menggunakan fasilitas anggur ) atau sebagai biner Windows .NET (menggunakan fasilitas mono )?
sumber
a.out
, "em86", "flat", dan "elf_fdpic" format serta ELF normal. Semua itu kecuali em86 tampaknya merupakan format biner asli yang dapat dieksekusi; tidak ada informasi yang cukup bagi saya untuk mencari tahu kapan orang akan menggunakan "flat" atau "elf_fdpic". em86 tampaknya merupakan mekanisme pra-binfmt_misc untuk menjalankan emulator x86 tertentu, mungkin hanya ada untuk kompatibilitas mundur.update-binfmts --display