Rozumiem, że Linux używa linii shebang do określenia, jakiego interpretera należy użyć do języków skryptowych, ale jak to działa w przypadku plików binarnych?
To znaczy mogę uruchomić aplikacji linuksowych, a po zainstalowaniu zarówno wino i mono , Windows rodzimych i .NET plików binarnych. I dla wszystkich z nich po prostu ./binary-name
(jeśli nie w PATH), aby go uruchomić.
W jaki sposób Linux określa, że dany plik binarny musi być uruchamiany jako natywny plik binarny systemu Linux, jako natywny plik binarny systemu Windows (przy użyciu narzędzi do wina ) lub jako plik binarny systemu Windows .NET (przy użyciu urządzeń mono )?
źródło
a.out
formatów „em86”, „flat” i „elf_fdpic”, a także normalny ELF. Wszystkie z wyjątkiem em86 wydają się być natywnymi binarnymi formatami plików wykonywalnych; nie ma wystarczającej ilości informacji, aby wymyślić, kiedy należy użyć „płaskiego” lub „elf_fdpic”. em86 wydaje się być mechanizmem pre-binfmt_misc do uruchamiania określonego emulatora x86, prawdopodobnie jest jeszcze dostępny dla kompatybilności wstecznej.update-binfmts --display