Я понимаю, что Linux использует строку shebang, чтобы определить, какой интерпретатор использовать для языков сценариев, но как он работает для двоичных файлов?
Я имею в виду, что могу запускать бинарные файлы Linux и установить как двоичные файлы Wine, так и mono , Windows и .NET. И для всех них это просто ./binary-name
(если не в PATH), чтобы запустить его.
Как Linux определяет, что данный двоичный файл должен быть запущен как собственный двоичный файл Linux, как собственный двоичный файл Windows (с использованием средств Wine ) или как двоичный файл Windows .NET (с использованием средств mono )?
источник
a.out
текстов Linux по-прежнему включает встроенную поддержку форматов "em86", "flat" и "elf_fdpic", а также обычный ELF. Все из них, кроме em86, выглядят как собственные двоичные исполняемые форматы; мне не хватает информации, чтобы понять, когда можно использовать «flat» или «elf_fdpic». em86, по-видимому, является механизмом pre-binfmt_misc для запуска конкретного эмулятора x86, вероятно, он все еще работает для обратной совместимости.update-binfmts --display