O compilador GCC/G++

1. O compilador GCC/G++

Gabriel Oliveira da Silva
Gabrielz

(usa Arch Linux)

Enviado em 15/06/2015 - 12:23h

Bom, como sabemos, o Linux e os sistemas do tipo Unix ostentam ao sistema operacional da Microsoft os tão famosos compiladores C/C++ (e acho que tem mais linguagem de programação) GCC/G++, do GNU.

Lendo um pouco na rede mundial de computadores, descobri que há uma coisa mística por trás destes "bichinhos criadores de binários". ELES SÃO CROSS-COMPILE! Isto quer dizer que, é possível compilar para várias plataformas. Quando dou, por exemplo, um "g++ projeto.c", gero um binário para a Ubuntu-family. Tem como eu configurar o GCC/G++ para compilar ao Linux de forma geral ou ao Windows?

Aposto que o Thihup vai responder meu tópico... querem ver?


  


2. Re: O compilador GCC/G++

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 15/06/2015 - 12:35h

Gabrielz escreveu:

Bom, como sabemos, o Linux e os sistemas do tipo Unix ostentam ao sistema operacional da Microsoft os tão famosos compiladores C/C++ (e acho que tem mais linguagem de programação) GCC/G++, do GNU.

Lendo um pouco na rede mundial de computadores, descobri que há uma coisa mística por trás destes "bichinhos criadores de binários". ELES SÃO CROSS-COMPILE! Isto quer dizer que, é possível compilar para várias plataformas. Quando dou, por exemplo, um "g++ projeto.c", gero um binário para a Ubuntu-family. Tem como eu configurar o GCC/G++ para compilar ao Linux de forma geral ou ao Windows?


Bom, pelo que eu conheco dos compiladores, eles geram um código em assembly e depois compilam. Acho meio dificil disso acontecer, mas é uma coisa pra eu colocar na minha lista TODO. Quero ver se o código-objeto pode ser portavel.
Ei ví compiladores do Linux que compilam aplicativos pro Windows, mas não sei se são Cross-Compile.
Se o código-objeto for portável, poderiamos criar em um OS 'x' (não me refiro ao mac) e fazer o binario no OS 'y'

Aposto que o Thihup vai responder meu tópico... querem ver?


Falo nada, só observo rsrsrsrs
É uma tentação não responder ...

Espero ter ajudado

[]'s

T+

--
http://piadasnerds.com/wp-content/uploads/2011/08/grafico_souProgramador.png


3. Re: O compilador GCC/G++

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/06/2015 - 14:13h

Ao que pesquisei isto é possível entre arquiteturas suportadas (i386 para X86_64, para powerpc ou ARM ) e mesmo entre sistemas operacionais diferentes, da até para compilar no Linux para o Windows, no Windows para o Linux, no OSX para Windows etc:

http://wiki.osdev.org/GCC_Cross-Compiler
http://arrayfire.com/cross-compile-to-windows-from-linux/

Porem como o que sei de C é básico, então deixo as explicações para os mais experientes.
--------------------------------------------
http://i.imgur.com/0e8QfOg.jpg



4. Re: O compilador GCC/G++

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/06/2015 - 12:53h

Gabrielz escreveu:

Bom, como sabemos, o Linux e os sistemas do tipo Unix ostentam ao sistema operacional da Microsoft os tão famosos compiladores C/C++ (e acho que tem mais linguagem de programação) GCC/G++, do GNU.


Eu não sei se o ostentam. Sei que o usam.

Mas não se usa apenas o GCC. O mundo de computação científica, por exemplo, gosta muito do compilador da Intel (C, C++ e Fortran), mesmo no Linux. Dizem, inclusive aqui na empresa em que trabalho, que ele não apenas compila mais rapidamente que o GCC, mas também que produz código mais eficiente.

Lendo um pouco na rede mundial de computadores, descobri que há uma coisa mística por trás destes "bichinhos criadores de binários". ELES SÃO CROSS-COMPILE! Isto quer dizer que, é possível compilar para várias plataformas. Quando dou, por exemplo, um "g++ projeto.c", gero um binário para a Ubuntu-family. Tem como eu configurar o GCC/G++ para compilar ao Linux de forma geral ou ao Windows?


O GCC pode ser usado como cross compiler, mas creio que seu uso majoritário é como compilador nativo.

"Linux de forma geral" depende do que você chama de "forma geral". Se você tem compila um programa no seu Ubuntu com amd64, é provável que o mesmo executável execute num Red Hat, Slackware ou Mandriva, desde que eles estejam também executando com arquitetura amd64 e que tenham bibliotecas dinâmicas compatíveis com as que você usou na hora de gerar seu executável. Se você usar apenas bibliotecas estáticas, a chance de compatibilidade é maior ainda. Entretanto, se você tentar executar o mesmo executável num Linux, sim, mas usando outra arquitetura, tal como ARM, Power ou Sparc, é evidente que não vai funcionar.

Para compilar programas para outro SO, não basta ter um compilador capaz de gerar código binário ou Assembly do processador usado nesse SO. É preciso também ter um ambiente de suporte a esse SO. Por exemplo: se eu quiser compilar programas para Solaris/Sparc a partir de um Linux/amd64, eu tenho, sim, de ter um cross compiler para Sparc, mas tenho também de ter as bibliotecas, os arquivos de definição de interfaces nativas do SO (incluindo os arquivos de cabeçalhos que normalmente residem em /usr/include) e algumas ferramentas de apoio, como assembler, linker, indexadores, programas que exportem ou importem tabelas de símbolos etc.

No caso específico de gerar código para Windows a partir do Linux, o Ubuntu, por exemplo, tem pacotes do MingW. Eu só não sei quão elaborado poderá ser um programa compilado com essas ferramentas, pois acho improvável que os pacotes incluam bibliotecas nativas da Microsoft que permitam recursos mais especializados e avançados.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts