Je comprends que Linux utilise la ligne shebang pour déterminer quel interpréteur utiliser pour les langages de script, mais comment cela fonctionne-t-il pour les binaires?
Je veux dire que je peux exécuter des binaires Linux et avoir installé à la fois Wine et mono , Windows natif et binaires .NET. Et pour tous, c'est juste ./binary-name
(sinon dans PATH) de l'exécuter.
Comment Linux détermine-t-il qu'un binaire donné doit être exécuté en tant que binaire natif Linux, en tant que binaire natif Windows (en utilisant les installations de Wine) ou en tant que binaire Windows .NET (en utilisant les installations mono )?
la source
a.out
formats «em86», «flat» et «elf_fdpic» ainsi que ELF normal. Tous ceux sauf em86 semblent être des formats exécutables binaires natifs; il n'y a pas assez d'informations pour que je sache quand on utiliserait "flat" ou "elf_fdpic". em86 semble être un mécanisme pré-binfmt_misc pour exécuter un émulateur x86 particulier, il n'est probablement encore là que pour la compatibilité descendante.update-binfmts --display