Como compilar para o Windows no Linux com o gcc/g++?

escrevi alguns efeitos em C++ (g++) usando o freeglut no Linux, e compilo-os com

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

estava a pensar se seria possível fazer com que o g++ fizesse executáveis compilados estáticos do Windows que contivessem tudo o que fosse necessário?

Eu Não tenho Windows, então seria muito legal, se eu pudesse fazer isso no Linux:)

Author: Rakete1111, 2010-01-09

7 answers

O Mingw32 existe como um pacote para o Linux. Você pode cruzar as aplicações do Windows com ele. Há um tutorial aqui no Code:: Blocks forum . Lembre-se que o comando muda para x86_64-w64-mingw32-gcc-win32, por exemplo.

O Ubuntu, por exemplo, tem o MinGW nos seus repositórios:

$ 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
[...]
 103
Author: AndiDog, 2019-02-08 20:43:21

Uma opção de compilação para o Windows no Linux é via mingw. Eu encontrei um tutorial muito útil aqui.

Para instalar o mingw32 em sistemas baseados no Debian, execute o seguinte comando:
sudo apt-get install mingw32

Para compilar o seu código, pode usar algo como:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

Você às vezes vai querer testar a nova aplicação do Windows diretamente no Linux. Você pode usar vinho para isso, embora você deve sempre ter em mente que o vinho pode ter insetos. Isso significa que você pode não ser certeza de que um bug está no vinho, seu programa, ou ambos, então use apenas vinho para testes gerais.

Para instalar vinho, corra.:
sudo apt-get install wine

 31
Author: aggregate1166877, 2020-06-05 08:45:45

O método sugerido deu-me um erro no Ubuntu 16.04: e: incapaz de localizar o pacote mingw32

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

Para instalar este pacote no Ubuntu, utilize por favor o seguinte:

sudo apt-get install mingw-w64

Depois de instalar, pode usá-lo:

x86_64-w64-mingw32-g++
Por favor, note!

Para utilização a 64 bits: x86_64-w64-mingw32-g++

Para utilização a 32 bits: i686-w64-mingw32-g++

 23
Author: 0x8BADF00D, 2020-06-08 19:32:28

Instale um compilador cruzado, como o mingw64 do seu gestor de pacotes. Em seguida, compile da seguinte forma: em vez de simplesmente chamar gcc call i686-w64-mingw32-gcc para janelas de 32 bits ou x86_64-w64-mingw32-gcc" para Janelas de 64 bits. Eu também usaria a opção --static, Pois o sistema alvo pode não ter todas as bibliotecas.

Se quiser compilar outra língua, como o Fortran, substitua -gcc por -gfortran nos comandos anteriores.

 14
Author: Pedro Miranda, 2017-04-16 22:14:24

Usei o mingw no Linux para fazer executáveis do Windows em C, suspeito que o C++ também funcionaria.

Tenho um projecto, ELLCC, que embala e outras coisas como uma cadeia de compiladores cruzados. Eu o uso para compilar clang (C++), binutils e GDB para Windows. Siga a ligação de download em ellcc.org para binários pré-compilados para várias máquinas Linux.
 8
Author: Richard Pennington, 2018-06-03 17:56:10

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

A partir de Fedora 17 é possível construir binários (cross-compile) para os alvos win32 e win64. Isto é realizado usando o mingw-w64 toolchain: http://mingw-w64.sf.net/. Usando este conjunto de ferramentas permite que você para construir binários para as seguintes linguagens de programação: C, C++, objective-C, objective-C++ e Fortran.

"Dicas e truques para usar o compilador cruzado do Windows": https://fedoraproject.org/wiki/MinGW/Tips

 5
Author: iljau, 2014-02-23 03:37:07

Para Fedora:

# Fedora 18 or greater
sudo dnf group install "MinGW cross-compiler"

# Or (not recommended, because of its deprecation)
sudo yum groupinstall -y "MinGW cross-compiler"
 4
Author: scavenger, 2020-09-05 23:24:17