Ausführbare Linux- und Windows-Dateien verwenden unterschiedliche Formate. Linux verwendet auf den meisten Architekturen das ELF-Format, während Windows das PE-Format verwendet. ELF eignet sich besser für die Art und Weise, wie Linux gemeinsam genutzte Bibliotheken verwaltet, und PE eignet sich besser für die Art und Weise, wie Windows gemeinsam genutzte Bibliotheken verwaltet, aber es gibt keinen grundlegenden Grund, warum Linux ausführbare PE-Dateien oder ausführbare Windows-ELF-Dateien nicht ausführen könnte. Tatsächlich kann Linux ausführbare PE-Dateien über Wine ausführen.
Die Schwierigkeit besteht darin, dass Windows und Linux völlig unterschiedliche APIs haben:Sie haben unterschiedliche Kernel-Schnittstellen und Bibliothekssätze. Um eine Windows-Anwendung tatsächlich auszuführen, müsste Linux also alle API-Aufrufe emulieren, die die Anwendung durchführt. Das ist eine Menge Arbeit. Wine tut es bis zu einem gewissen Grad, aber es ist sehr schwierig, zumal der Hersteller von Windows nicht kooperiert. Sie können es beispielsweise damit vergleichen, Englisch zu lernen, wenn Ihre Muttersprache Chinesisch ist:Das ausführbare Format ist das Alphabet (nicht so schwer zu beherrschen), die API ist das Vokabular (es dauert Jahre, bis Sie auf ein Niveau kommen, auf dem Sie mit dem Lesen von Literatur beginnen können ).
Windows-Binärdateien haben eine andere ABI und verwenden eine andere API als Linux-Binärdateien.
Linux-Binärdateien benötigen keine Erweiterung, da *nix anstelle der Erweiterung Berechtigungsbits verwendet, um eine ausführbare Datei zu identifizieren.