Je ne demande pas comment faire fonctionner un exe Windows sous Linux.
Je demande POURQUOI cela ne fonctionne pas.
Qu'est-ce qui diffère dans la façon dont Windows exécute un exécutable et Linux exécute un exécutable? Pourquoi devaient-ils être différents? De plus, pourquoi les exécutables Linux n'ont-ils pas d'extension de fichier?
Réponses:
Les exécutables Linux et Windows utilisent différents formats. Linux utilise le format ELF sur la plupart des architectures, tandis que Windows utilise le format PE . ELF est mieux adapté à la façon dont Linux gère les bibliothèques partagées, et PE est mieux adapté à la façon dont Windows gère les bibliothèques partagées, mais il n'y a aucune raison fondamentale pour laquelle Linux ne pourrait pas exécuter les exécutables PE ou les exécutables Windows ELF. En fait, Linux peut exécuter des exécutables PE, via Wine .
La difficulté est que Windows et Linux ont des API complètement différentes : elles ont des interfaces de noyau et des ensembles de bibliothèques différents. Donc, pour exécuter réellement une application Windows, Linux devrait émuler tous les appels d'API que l'application effectue. Ça fait beaucoup de travail. Wine le fait dans une certaine mesure, mais c'est très difficile, d'autant plus que le fabricant de Windows ne coopère pas. Vous pouvez le comparer avec, disons, l'apprentissage de l'anglais lorsque votre langue maternelle est le chinois: le format exécutable est l'alphabet (pas si difficile à maîtriser), l'API est le vocabulaire (il faut des années pour arriver à un niveau où vous pouvez commencer à lire la littérature ).
la source
Les binaires Windows ont un ABI différent et utilisent une API différente de celle des binaires Linux.
Les binaires Linux n'ont pas besoin d'une extension car * nix utilise des bits d'autorisation pour identifier un exécutable au lieu de l'extension.
la source
C'est ainsi que j'ai entendu le côté Windows expliqué en termes simples par les programmeurs.
Dans Windows, il existe des hooks dans les programmes et le système d'exploitation auquel Exe fait des appels ne sera pas là sous Linux. En raison des différences dans les deux environnements. Initialement, Linux recherche des autorisations, Windows recherche d'abord un format pouvant être lié en examinant l'extension, en regardant les propriétés puis en regardant à l'intérieur du fichier Exe, etc.
Il y a des applications comme Netbackup qui ont commencé sous Linux et ont été modifiées pour fonctionner dans un environnement Windows sans utiliser Wine IMHO, souvent celles-ci sont parmi les meilleures applications Windows les plus stables.
Lorsque Windows Apps. devenir indiscipliné généralement parce que certains de ces crochets détenus par l'application n'ont pas été complètement libérés et Windows pense qu'ils l'étaient (Memory Leaks). Lorsque Windows remet cet espace mémoire non libéré à une autre application Plantage et gravure.
la source