web-dev-qa-db-fra.com

Comment faire en sorte que Windows exécute des exécutables Linux?

J'ai compilé un programme C++ sous Linux:

make -f mymakefile

Cela générera un exécutable, a.out. Il semble que cet exécutable ne puisse pas être exécuté dans l'invite de commande Windows.

4
Terry Qiao

Vous ne pouvez pas exécuter nativement un programme pour Linux sous Windows. Ce sont des systèmes d'exploitation complètement différents.

Cependant, il existe des méthodes que vous pouvez essayer pour exécuter le programme:

  1. Recompiler le programme sous Windows pour obtenir un native exécutable
  2. Installez le Sous-système Windows pour Linux et exécutez le programme dans cet environnement.
  3. Installez Linux sur une machine virtuelle et exécutez le programme dans cet environnement.
  4. Installer Cygwin ou MinGW et recompiler et exécuter dans cet environnement
  5. Utilisez un compilateur cross

Accordé, en fonction de la nature du programme et de ses dépendances, il pourrait ne pas être possible de s'exécuter dans un autre environnement sans logiciel supplémentaire, sans modification du code source , ni même du tout.

93
Keltari

Vous avez besoin du sous-système Linux pour Windows (WSL) et d'une distribution Linux. Le Windows Store contient quelques distributions Linux préemballées avec WSL. Ubuntu est assez populaire, mais comme vous avez déjà un système Linux sur lequel vous avez construit a.out, il serait peut-être plus simple de faire correspondre cela.

Si vous ne pouvez pas faire correspondre les distributions Linux et que a.out ne fonctionne pas tel quel, il est également possible de réexécuter make sur votre distribution WSL.

25
MSalters

La réponse ci-dessus couvrait la plupart des aspects, mais je ne savais pas si nous avions rencontré flinux (parfois appelé linux étranger), ce qui s'avère être également suggéré ici et pourrait constituer une solution de contournement plus facile en fonction de ce que vous êtes en essayant d'atteindre.

(Notez que j'ai WSL et que je travaille beaucoup avec des émulateurs et des machines virtuelles et que je n'ai pas vraiment d'explorateur d'autres solutions de contournement :))

LINUX étranger est un traducteur binaire dynamique et un émulateur d’interface d’appel système Linux pour la plate-forme Windows. Il est capable d'exécuter des fichiers binaires Linux non modifiés sous Windows sans aucun pilote ou modification du système. Cela fournit un autre moyen d'exécuter des applications Linux sous Windows par rapport à Cygwin et à d'autres outils. Il exécute maintenant un grand nombre d'applications de console et certaines applications à interface graphique.

7
xavier_fakerat

Vous pouvez effectuer une compilation croisée pour Windows sous Linux.

Voir https://stackoverflow.com/questions/2033997/how-to-compile-for-windows-on-linux-with-gcc-g

Cela vous permet d'utiliser Linux pour compiler un programme exécutable binaire exécuté sous Windows.

5
RedGrittyBrick

Une autre option similaire à l’exécution d’une machine virtuelle, mais pas exactement la même chose, consiste à exécuter votre application à partir d’un conteneur Docker.

Oui, Docker pour Windows utilise un VM en arrière-plan (MobyLinuxVM sur HyperV), mais vous pouvez procéder de la manière suivante:

$ docker run a.out

et arrêtera le conteneur tout seul. Il utilisera également moins de ressources et la sortie peut être lue à partir de terminaux Windows tels que cmd et PowerShell.

Un fichier docker pour cette situation ressemblera à ceci:

FROM docker pull ubuntu:latest

RUN make -f mymakefile

Je pense personnellement que c'est la meilleure solution pour exécuter des applications Linux sous Windows

2
Thomas

Pour ce cas particulier, j’ai moi-même déjà installé gcc sur mes fenêtres 8 avec mingw.

Ensuite, j’ajouterais le chemin de mon dossier mingw au chemin du système (à partir du panneau de configuration/système/paramètres système avancés).

Ensuite, je pourrais lancer gcc sur ma commande Invite, exactement comme Linux.

0
Amin Vakil