web-dev-qa-db-fra.com

Comment compiler pour Windows sur Linux avec gcc / g ++?

J'ai écrit des effets en C++ (g ++) en utilisant freeglut sur Linux, et je les ai compilés avec

g++ -Wall -lglut part8.cpp -o part8

Je me demandais donc s'il était possible que g ++ crée des exécutables Windows compilés statiques contenant tout le matériel nécessaire.

Je n'ai pas Windows, alors ce serait vraiment cool si je pouvais le faire sous Linux :)

93
Louise

mingw32 existe sous forme de package pour Linux. Vous pouvez compiler et lier des applications Windows avec elle. Il y a un tutoriel ici sur le forum Code :: Blocks . Remarquez que la commande change en x86_64-w64-mingw32-gcc-win32, par exemple.

Ubuntu, par exemple, a MinGW dans ses dépôts:

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]
76
AndiDog

Une option de compilation pour Windows sous Linux est via mingw. J'ai trouvé un tutoriel très utile ici .

Pour installer mingw32 sur des systèmes Debian, exécutez la commande suivante:
Sudo apt-get install mingw32 mingw32-binutils mingw32-runtime

Pour compiler votre code, vous pouvez utiliser quelque chose comme:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

Vous voudrez parfois tester la nouvelle application Windows directement sous Linux. Vous pouvez utiliser du vin pour cela, même si vous devez toujours garder à l'esprit que le vin peut avoir des insectes. Cela signifie que vous ne pouvez pas être sûr qu'un bogue est dans wine, votre programme ou les deux, utilisez donc wine uniquement pour des tests généraux.

Pour installer Wine, lancez:
Sudo apt-get install wine

26
aggregate1166877

La méthode suggérée m'a donné une erreur sur Ubuntu 16.04: E: impossible de localiser le paquet mingw32

=============================================== ==========================

Pour installer ce paquet sur Ubuntu, veuillez utiliser ce qui suit:

Sudo apt-get install mingw-w64

Après l'installation, vous pouvez l'utiliser:

x86_64-w64-mingw32-g++

Notez s'il vous plaît!

Pour une utilisation en 64 bits: x86_64-w64-mingw32-gc ++

Pour une utilisation en 32 bits: i686-w64-mingw32-g ++

14
0x8BADF00D

Installez un compilateur croisé, comme mingw64 à partir de votre gestionnaire de paquets. Puis compilez de la manière suivante: au lieu d’appeler simplement gcc call i686-w64-mingw32-gcc pour Windows 32 bits ou x86_64-w64-mingw32-gcc" pour Windows 64 bits. Je voudrais aussi utiliser le --static, car le système cible peut ne pas avoir toutes les bibliothèques.

Si vous voulez compiler un autre langage, comme Fortran, remplacez -gcc avec -gfortran dans les commandes précédentes.

13
Pedro Miranda

J'ai utilisé mingw sous Linux pour créer des exécutables Windows en C, je suppose que le C++ fonctionnerait également.

J'ai un projet, ELLCC, qui installe clang et d'autres choses en tant que chaîne d'outils de compilateur croisé. Je l'utilise pour compiler clang (C++), binutils et GDB pour Windows. Suivez le lien de téléchargement à l'adresse ellcc.org pour les fichiers binaires pré-compilés pour plusieurs hôtes Linux.

5
Richard Pennington

De: https://fedoraproject.org/wiki/MinGW/Tutorial

A partir de Fedora 17, il est possible de créer facilement des fichiers binaires (multi-compilation) pour les cibles win32 et win64. Ceci est réalisé en utilisant la chaîne d'outils mingw-w64: http://mingw-w64.sf.net/ . L'utilisation de cette chaîne d'outils vous permet de créer des fichiers binaires pour les langages de programmation suivants: C, C++, Objective-C, Objective-C++ et Fortran.

"Trucs et astuces pour utiliser le compilateur croisé Windows": https://fedoraproject.org/wiki/MinGW/Tips

4
iljau

pour Fedora c'est

Sudo yum groupinstall -y "MinGW cross-compiler"
1
scavenger