7
votes

Est-il possible de compiler des fichiers binaires Windows sur une machine Linux?

Sur mon travail, toutes les données du projet résident sur un NFS accessible à partir des machines Linux et Windows (à l'aide de Samba). Tout le travail est effectué sur Linux, mais je joue avec l'idée de compiler certains des outils pour Windows afin que je puisse déboguer avec Visual Studio.

J'ai déjà un beau maquillage qui peut construire le code pour Linux 32 bits ou 64 bits en utilisant différentes cibles. En supposant que j'ai des versions Windows de toutes les bibliothèques externes quelque part sur le NFS et que le code est suffisamment propre pour compiler sous Windows, est-il possible de compiler et de lier mon programme pour Windows à l'aide du makefile existant, sous Linux? Idéalement, j'aimerais appeler le makefile une fois et avoir construit les trois des 32 bits Linux, 64 bits Linux et Windows.

Un plus supplémentaire serait la possibilité de le compiler avec des métadonnées Visual Studio pour faciliter la déboguer.


2 commentaires

Vous demandez un " Compilateur croisé ".


Les fichiers binaires sont une source précompilée peuvent être compilés


3 Réponses :


5
votes

Oui, vous pouvez y parvenir avec Mingw par exemple.

Cependant, vous devrez probablement adapter une ou deux options dans votre maquillage.


5 commentaires

MINGW fonctionne sous Windows, pas Linux. Mais cela construira au moins une application Windows natif à l'aide des outils GNU Tools familiers à Linux. Méfiez-vous cependant que MINGW utilise MSVCRT.DLLL C Runtime de Microsoft plutôt que GNU Libc.


MINGW fonctionne également sur Linux, et c'est ce qui est normalement utilisé pour la compilation croisée Linux-> Windows.


@Clifford - Silmor.de/39 par exemple, explique comment construire MingW pour fonctionner sous Linux.


Hum ... désolé mais je l'ai installé sur Linux (Xubuntu, mais il semble qu'il vient de Debian => Packages "Mingw32", "Mingw32-Binutils" et "Mingw32-Runtime" - Ces packages contiennent "C et C ++ Cross compilateurs ")). Je l'ai utilisé une ou deux fois pour compiler des choses qui ne voulaient pas drivement sur Windows.


Je suis corrigé alors. Il ne supporte toujours pas l'exigence de l'OP de "déboguer avec Visual Studio".



1
votes

Il y a un certain nombre de possibilités que je peux penser:

  • Vous pouvez essayer d'exécuter Visual Studio sous le vin. Si Visual Studio ne fonctionne pas, vous pourrez peut-être toujours exécuter les outils de ligne de commande.

  • exécutez une installation complète de Windows dans une machine virtuelle. Je l'ai fait avec Linux sur Windows, mais pas l'inverse, mais je suis certain que cela est possible.

  • Utilisez VNC pour accéder à un PC Windows séparé du PC Linux

  • Utilisez une construction croisée de GCC au lieu de Visual Studio


2 commentaires

Pourquoi énumérer la meilleure option comme la dernière?


@GIMPF: répertorié comme ils sont partis et "meilleure option" est une question d'opinion. L'OP voulait utiliser le débogueur Visual Studio, et la dernière option ne prend pas en charge cet objectif, alors je dirais que ce n'était pas la solution de la BAST dans ce cas.



1
votes

Vous avez besoin d'un package de compilation croisé. Vous pouvez également utiliser le vin lib.


0 commentaires