Entendo que o Linux usa a linha shebang para determinar qual intérprete usar nas linguagens de script, mas como funciona para binários?
Quero dizer, posso executar binários Linux, e instalar os binários wine e mono , nativos do Windows e .NET. E para todos eles é apenas ./binary-name
(se não estiver no PATH) executá-lo.
Como o Linux determina que um determinado binário deve ser executado como um binário nativo do Linux, como um binário nativo do Windows (usando instalações wine ) ou como um binário do Windows .NET (usando instalações mono )?
fonte
a.out
formatos "em86", "flat" e "elf_fdpic", além do ELF normal. Todos, exceto o em86, parecem ser formatos executáveis binários nativos; não há informações suficientes para descobrir quando alguém usaria "flat" ou "elf_fdpic". O em86 parece ser um mecanismo pré-binfmt_misc para executar um emulador x86 específico, provavelmente ainda existe para compatibilidade com versões anteriores.update-binfmts --display