|
desenvolvimento
É possível gerar programas para
plataforma Windows utilizando as
ferramentas GNU/Linux
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.
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”.
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.
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.
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.
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
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.
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.
Por exemplo, para criar um
programa, compile-o assim:
mingw32
--get-path gcc
Ou diretamente usando:
mingw32
gcc arquivos
O GCC funcionará normalmente, mas
irá gerar um arquivo executável Win32.
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!
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
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
| |