Ich frage nicht , wie man eine Windows-Exe unter Linux zum Laufen bringt.
Ich frage, warum es nicht funktioniert.
Was ist anders an der Art und Weise, wie Windows eine ausführbare Datei und Linux eine ausführbare Datei ausführt? Warum mussten sie anders sein? Warum haben ausführbare Linux-Dateien keine Dateierweiterung?
Antworten:
Ausführbare Dateien für Linux und Windows 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 Verwaltung von gemeinsam genutzten Bibliotheken durch Linux, und PE eignet sich besser für die Verwaltung von gemeinsam genutzten Bibliotheken durch Windows. Es gibt jedoch keinen fundamentalen Grund, warum Linux keine ausführbaren PE- oder Windows ELF-Dateien ausführen konnte. 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 Bibliotheksgruppen. Um eine Windows-Anwendung tatsächlich auszuführen, müsste Linux alle API-Aufrufe emulieren, die die Anwendung vornimmt. Das ist viel Arbeit. Wein tut es bis zu einem gewissen Grad, aber es ist sehr schwer, zumal der Hersteller von Windows nicht kooperiert. Sie können es mit dem Lernen von Englisch vergleichen, 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 anfangen können, Literatur zu lesen) ).
quelle
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.
quelle
So hörte ich die Fensterseite von Programmierern in Laiensprache erklären.
In Windows gibt es Hooks in Programmen und das Betriebssystem, das von Exe aufgerufen wird, ist in Linux einfach nicht vorhanden. Wegen der Unterschiede in beiden Umgebungen. Anfänglich sucht Linux nach Berechtigungen, Windows sucht zuerst nach einem verknüpfbaren Format, indem es die Erweiterung untersucht, Eigenschaften ansieht und dann in die Exe-Datei schaut usw.
Es gibt Anwendungen wie Netbackup, die unter Linux gestartet wurden und so modifiziert wurden, dass sie in einer Windows-Umgebung ohne Wine laufen. Häufig sind dies einige der stabilsten Windows-Apps, die sich am besten verhalten.
Bei Windows Apps. Unruhig wird es in der Regel, weil einige der von der Anwendung gehaltenen Hooks nicht vollständig freigegeben wurden und Windows dies für möglich hält (Memory Leaks). Wenn Windows diesen nicht freigegebenen Speicherplatz an eine andere Anwendung abgibt, können Sie abstürzen und brennen.
quelle