Ich verstehe, dass Linux shebang line verwendet, um zu bestimmen, welcher Interpreter für Skriptsprachen verwendet werden soll, aber wie funktioniert es für Binärdateien?
Ich meine, ich kann Linux-Binärdateien ausführen und sowohl Wine- als auch Mono- , Windows-native- und .NET-Binärdateien installieren . Und für alle von ihnen ist es nur ./binary-name
(wenn nicht in PATH), es auszuführen.
Wie bestimmt Linux, dass eine bestimmte Binärdatei als native Linux-Binärdatei, als native Windows-Binärdatei (unter Verwendung von Wine-Funktionen ) oder als Windows .NET-Binärdatei (unter Verwendung von Mono-Funktionen ) ausgeführt werden muss?
quelle
a.out
Formate "em86", "flat" und "elf_fdpic" sowie für normales ELF. Alle außer em86 scheinen native ausführbare Binärformate zu sein. Es gibt nicht genug Informationen, um herauszufinden, wann man "flat" oder "elf_fdpic" verwenden würde. em86 scheint ein Mechanismus vor binfmt_misc zu sein, mit dem ein bestimmter x86-Emulator ausgeführt werden kann. Wahrscheinlich gibt es ihn nur noch aus Gründen der Abwärtskompatibilität.update-binfmts --display