Question

Est-il possible d'exécuter les fichiers exécutables de café sur Unix ou les fichiers exécutables ELF sur Windows? Et quelles seraient les étapes pour pouvoir exécuter l'un ou l'autre type de fichier sur Windows et Unix. Je suis juste curieux.

Était-ce utile?

La solution

Pour réellement exécuter des exécutables et les faire faire des choses utiles, vous devez vous soucier de l'API, pas seulement du format de fichier exécutable. Sur une machine Linux avec du vin installé, vous pouvez exécuter des fichiers Windows .exe à partir de la ligne de commande et ils font la même chose qu'ils font sur Windows.

L'inverse n'est pas vraiment possible, mais si vous installez Cygwin sur une machine Windows, puis reconstruisez l'application à partir de la source avec des compilateurs cygwin, vous obtiendrez un exécutable qui s'exécute sur Windows et fait la même chose que l'exécutable Linux fait sur Linux. De nombreux outils Linux standard sont déjà portés et dans le référentiel Cygwin, y compris des trucs comme X-Windows et GIMP.

Autres conseils

http://lbw.sourceforge.net/ fonctionne mieux que la ligne. Low était un autre projet pour faire la même chose, mais c'était le moins de travail.

ÉDITER: http://atratus.org/ Semble faire de même aussi, sans avoir besoin d'avoir Interix / SFU.

Pour répondre correctement à votre question, il est pertinent de revoir ce que sont ELF, COFF et PE. Ces formats binaires ne sont essentiellement que des conteneurs qui donnent des instructions au système d'exploitation sur la façon d'exécuter les instructions CPU brutes contenues dans le fichier. Ils ressemblent beaucoup à des conteneurs audio / vidéo comme MKV, WMV et OGG. La prise en charge du format exécutable est soit dans le système d'exploitation ou non. Microsoft Windows n'a toujours pas pris en charge pour COFF ou ELF, jusqu'à récemment. Avec Windows 10, Microsoft a fourni une prise en charge indirecte pour ELF en construisant les routines système compatibles USerMode-Linux du noyau Windows. Un noyau Linux Userode s'exécute sur le noyau Windows et exécute tous les formats binaires ELF presque comme s'il fonctionnait indépendamment de MS Windows.

L'alternative à l'utilisation de l'USermode-linux (sous-nage) pour Microsoft pour réécrire la majorité de l'API Linux dans un format complètement compatible, leur choix résout un autre problème de compatibilité: L'API. "A" signifie Application et "I" pour l'interface, mais l'API en tant qu'interface n'est principalement qu'un ensemble de routines exécutables et d'hypothèses d'environnement. L'accès au système de fichiers et à la plupart des routines système est fourni par le noyau Windows, tandis que tout le reste est fourni dans le noyau Linux Userode. De cette façon, non seulement Windows peut exécuter des exécutables à formater ELF, mais peut exécuter les exécutables ELF les plus populaires qui sont déjà conçus pour s'exécuter sur l'API Linux.

L'inverse, l'autre moitié de la question, exécutant PE (la plupart des exécutables Microsoft Windows) sur Linux est également possible. Il existe deux bibliothèques d'enveloppement d'exécution qui peuvent exécuter MSIL (Virtual Machine Application) et Win32 (application CPU normale). Étant donné que le noyau Linux est extensible pour reconnaître un certain format d'octet, exécutez un programme de wrapper approprié, le noyau prend en effet PE et les formats de conteneurs potentiellement plus exécutables. Par conséquent, Linux peut exécuter certains programmes PE soit dans le mono d'exécution (.NET / C # Applications) ou dans le temps d'exécution du vin (Win32 C / C ++).

Pour installer l'environnement Usermode-Linux, vous pouvez suivre les instructions fournies sur Le réseau de développement de Microsoft. Résumer:

  1. Allumez le mode développeur: Paramètres | Mise à jour et sécurité | Pour les développeurs | Vérifiez le bouton radio du mode développeur
  2. Dans le menu Démarrer, ouvrez «Tourner les fonctionnalités Windows ON ou OFF»
  3. Faites défiler vers le bas et vérifiez la fonctionnalité «Sous-système Windows pour Linux (Beta)»
  4. Frapper bien et redémarrer (étape requise)
  5. Une fois redémarré, ouvrez une invite PowerShell / de commande et exécutez «bash» et suivez les invites simples pour accepter la licence de Canonical et lancer le téléchargement de l'image Ubuntu
  6. Une fois le téléchargement terminé, vous pourrez démarrer «Bash sur Ubuntu sur Windows» dans le menu Démarrer

Sachez que cette méthode ne fonctionne que sur Windows 10 et est toujours limitée à la console en mode texte et à un port Win32 de Xorg comme VCXSRV pour tout ce qui est graphique. Les systèmes Cygwin ou MSYS2 ne sont pas en mesure d'exécuter des binaires ELF, mais permettent de porter et d'exécuter les mêmes applications qui sont normalement des binaires ELF sur un système Linux.

COFF a été initialement introduit par UNIX (autour du système V ou à peu près), donc oui, certains prennent probablement en charge le format COFF. Il a été déprécié par Linux au moins pendant un certain temps, et probablement la plupart des autres unices ont également déprécié ou carrément abandonné le soutien.

La prise en charge de Windows ELF est un peu plus incertaine - presque certainement pas là sans une ruse profonde. Vous devriez être plus précis sur ce que vous essayez de faire ici ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top