Saída de compilador no Linux, gerar executável para Windows [RESOLVIDO]

1. Saída de compilador no Linux, gerar executável para Windows [RESOLVIDO]

Francisco Dara
francicodara

(usa Ubuntu)

Enviado em 22/06/2018 - 20:21h

Galera HELP ME!
Eu uso Linux a vida toda pra tudo. Mas nunca tinha programado. Beleza, vamos ao problema; no Windows a IDE gera automaticamente um .exe (executável binário) pra distribuição do programa certo. Se vc gerar um .exe no seu windows eu dou dois cliques e abro normalmente no Linux com o auxilio do Wine. Eu uso o Code::Blocks que gera automaticamente o executável na pasta ...(parta_do_projeto)/bin/Debug com dois cliques tbm executo normalmente no terminal. Agora a questão: Como eu distribuo esse "executável" para "rodar" no windows?

Claro que sei que cada programa deve ser compilado no sistema final para o usuário, ou seja, Se pra Windows compilar no Windows, se pra Mac no Mac etc. Mas convenhamos que não se manda pra um cliente o main.c pra ele compilar e gerar executável. Ter que instalar o windows só pra isso é um saco. Deve Haver uma forma de contornar isso.


  


2. Re: Saída de compilador no Linux, gerar executável para Windows [RESOLVIDO]


oxidante

(usa Debian)

Enviado em 22/06/2018 - 23:38h

Instale o mingw32/64 (~900 MB):

sudo apt-get install mingw32
sudo apt-get install mingw-w64

Gerar o executável no formato PE do Windows:

i686-w64-mingw32-gcc -o app32.exe app.c
x86_64-w64-mingw32-gcc -o app64.exe app.c

Verificar se o arquivo foi gerado para a plataforma desejada:

file app32.exe

Outra maneira é montando um ambiente de desenvolvimento para a plataforma desejada para rodar junto com uma VM (QEMU por ex). Neste caso, sugiro usar a ferramenta buildroot (www.buildroot.org), que constrói o ambiente automaticamente para diversas plataformas que vc escolher.


3. Re: Saída de compilador no Linux, gerar executável para Windows [RESOLVIDO]

Matheus
mattfly

(usa Outra)

Enviado em 22/06/2018 - 23:40h

Há sim. Isso chama "cross compilling" ou "corss building". Você não pode converter nenhum binário de uma plataforma para outra, mas você pode sim usar um cross compilador, que a partir do seu código fonte, vai gerar um binário para outro OS a partir do seu OS.

O que o code blocks faz e a maioria das IDES fazem é chamar o compilador que pode ser o clang ou o gcc ou qualquer outro que você configurar. Se você está no ubuntu rode o comando: "sudo apt install mingw-w64"

Isso vai instalar o cross compiller. Pesquise por como compilar algo no terminal com o gcc, a sintaxe será a mesma com esse compilador. No meu caso o comando para ele é " i686-w64-mingw32-gcc"

Experimente ai!


4. Re: Saída de compilador no Linux, gerar executável para Windows [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 23/06/2018 - 09:35h

Outro cuidado que você deve tomar é com as bibliotecas.
No linux as bibliotecas dinâmicas (são sharedlibraries com extensão .so) e no linux são .DLL

Na prática qualquer programa não trivial que depende de qualquer biblioteca, você teria que fazer cross compiling para todas as dependências e não apenas pro seu programa... De preferência com ligação estática...

Na minha opinião fica muito mais difícil que fazer um ambiente de desenvolvimento próprio pra windows...




5. Respondido

Francisco Dara
francicodara

(usa Ubuntu)

Enviado em 24/06/2018 - 19:34h

Deu certinho aqui, obrigado pelas dicas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts