Entiendo que Linux usa la línea shebang para determinar qué intérprete usar para los lenguajes de script, pero ¿cómo funciona para los binarios?
Quiero decir que puedo ejecutar binarios de Linux, y haber instalado los binarios wine y mono , nativos de Windows y .NET. Y para todos ellos es solo ./binary-name
(si no en PATH) ejecutarlo.
¿Cómo determina Linux que un binario dado debe ejecutarse como un binario nativo de Linux, como un binario nativo de Windows (utilizando instalaciones de Wine ) o como un binario de Windows .NET (utilizando instalaciones mono )?
fuente
a.out
formatos "em86", "flat" y "elf_fdpic", así como ELF normal. Todos esos, excepto em86, parecen ser formatos ejecutables binarios nativos; no hay suficiente información para que yo sepa cuándo usaría "flat" o "elf_fdpic". em86 parece ser un mecanismo pre-binfmt_misc para ejecutar un emulador x86 en particular, probablemente solo esté disponible para la compatibilidad con versiones anteriores.update-binfmts --display