Revista Do Linux
 
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Estudo de Caso
 Produto
 Tutorial
 Iniciantes
 Segurança
 Hardware
 Desenvolvimento
 Entrevista
 Corporativo
 Especial
 Distro
 Comunidade
 
 
 
desenvolvimento
 
É possível gerar programas para plataforma Windows utilizando as
ferramentas GNU/Linux
 
<IMG> Todos nós conhecemos a ma-lea--bilidade das distros GNU/Linux para o desenvolvimento. Temos que admi-tir que não é uma característica exclu-siva do Linux, mas das ferramentas GNU. O ambiente de programação e desenvolvimento GNU C Compiler e suas bibliotecas são um fenômeno espantoso de qualidade. Na seqüência do Projeto “GnuPG for Unix”, dedicado a portar o software GnuPG para diferentes versões de sistemas Unix, tive a opor-tunidade de constatar o ótimo desempenho do GCC em vários SOs Unix. Enfim, ao desenvolver um programa com o ambiente GNU GCC, o software ganha não somente em qua-lidade e estabilidade, mas igualmente em portabili-dade.
<IMG> Um tópico que tem sido pouco ex-plorado é a capacidade de “cross-compiler development” do GCC. As vezes, por razões profissionais, tem-se que desenvolver binários para plataforma Windows, ou gerar DLLs, se o profissional não deseja sair de seu ambiente de trabalho GNU em sua má-quina Linux. Por que não pode continuar no seu sistema GNU/Li-nux para realizar o trabalho integral de desenvolvimento? Foi esta inquietação que levou Werner Koch (wk@gnupg.org) a reescrever o Mi-nimalist GNU-Win32, ou MingW32 para abreviar. Este sistema, atualmente na versão 0.3.0, baseou-se no programa original de Colin Peters para um compilador nativo Win32 e na conhecida ferramenta CygWin32 para plataformas Win32 (Windows 9x, NT, 2000), que usa uma biblioteca para gerar um ambiente Unix. Apesar de o release de Peters ser de muito boa qualidade, ele não apresentava as condições necessárias para que fosse executado como um “cross-compiler”.
<IMG> Werner Koch é o desenvolve-dor principal do GNU Privacy Guard, o GnuPG. Já tive a oportunidade de discutir o programa em outro artigo da Revista do Linux. Este projeto é um dos exemplos de êxito no “negócio do software livre”, pois conta hoje com o apoio financeiro do Ministério da Economia e Tecnologia alemão. Por conseguinte, neste financiamento constava a exigência de uma versão estável do GnuPG para a plataforma Windows.
<IMG> Assim, Werner adaptou o Ming-W32 para as versões mais novas do GCC e o integrou ao processo de cons-trução GNU autoconf, tornando-o mais fácil de usar e instalar. Desenvolveu também uma ferramenta específica para o desenvolvimento de DLLs chamada WkLib. Este processo de criação de bibliotecas nativas Win32 ainda não está automatizado, mas já é plenamente funcional. Também foram acrescidas algumas funções às bibliotecas, e várias outras já estão sendo estudadas como uma completa suíte stdio.
<IMG> Para instalar o pacote MingW32 serão necessários outros pacotes GNU, como o código-fonte do Bi-nutils e o GCC propriamente dito. Você os encontrará muito provavelmente na caixa de sua distro, mas note bem: são os pacotes com o código-fonte! E não os binários já pré-compilados. O código-fonte é necessário, pois eles serão adaptados com patches e reintegrados ao novo ambiente.
<IMG> Um detalhe que deve ser considerado com atenção: as versões dos pacotes GNU. O MingW32 não aceita ser compilado e instalado com outras versões discrepantes. No site FTP do GnuPG (ftp.gnupg.org/pub/people/werner/cpd), você encontrará os seguintes pacotes:
• mingw32-cpd-0.3.0.tr.gz:
sistema MingW32
• wklib-2.16.tar.gz:
pacote para criação de DLLs
• binutils-2.9.1.tar.gz:
pacote GNU Binutils
• gcc-core-2.95.2.tar.gz:
pacote central do GNU C Compiler
<IMG> Observe aqui as versões dos últimos pacotes GNU: Binutils versão 2.8.1 ou 2.9.1 (tem que ser uma ou outra) e GCC versão 2.95.2. Se sua distro Linux possui um CD com códigos-fonte verifique se contém estas versões, caso contrário, faça o download.
<IMG> Para instalar, descompacte os pacotes num diretório de sua escolha, digite ./Configure e responda as perguntas que aparecem na tela: o diretório no qual os arquivos serão instalados (‘where to install’), – em geral, usr/local, mas podem ser alterados sem problemas – e, em seguida, onde estão os pacotes com código-fonte (‘where is the gcc source’ e ‘where is the binutils source’). Preencha corretamente, e o processo de instalação começará a fazer os patches necessários. Terminado este passo, digite make e make install como de costume. O exe-cutável mingw32 será instalado, no nosso exemplo, no diretório /usr/local/bin e os arquivos restantes, em /usr/local/lib/mingw32-cpd – aqui estará instalada a nova versão do GCC patched pelo MingW32.
<IMG> Por exemplo, para criar um programa, compile-o assim:
 
mingw32 --get-path gcc
 
<IMG> Ou diretamente usando:
 
mingw32 gcc arquivos
 
<IMG> O GCC funcionará normalmente, mas irá gerar um arquivo executável Win32.
<IMG> Programas baseados no GNU autoconf também podem funcionar usando a opção “--host i386--ming32”, já os programas que usam a biblioteca GTK+ devem usar a opção “-fnative-struct”. Como o leitor pode observar por estas poucas opções, o mingw32 é uma porta aberta ao infinito!
<IMG> Outra maneira interessante de o leitor observar o funcionamento do cross-compiler é pegar o pacote do GnuPG (versão 1.0.6) e com-pi-lá-lo para Win32 no seu Linux. No diretório scripts, você encontrará o arquivo autogen.sh – leia o arquivo para conhecer suas direti-vas, e digite: ./autogen.sh --build-w32: isto acionará o MingW32 e compilará o gpg para a plataforma Windows. Já para a criação de DLLs use o pacote WkLib a que nos referimos. Descompacte e compile o programa ‘ldsh’. Ele será usado para a criação de bibliotecas.
 
Nota
<IMG> O MingW32 não irá alterar seu ambiente GCC original!
 
Para saber mais
Servidor FTP GNUPG:
ftp.gnupg.org
 
CYGWIN:
www.cygwin.org
 
Site GnuPG:
www.gnupg.org
 
Site do Projeto original de C. Peters:
www.mingw.org
 
Legen das
Site do Minimalist GNU-Win32
 
Instalação dos pacotes MingW32
 
Renato Martini
rmartini@cipsga.org.br
 
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux