Este artigo descreve como realizar cross-compile de aplicações windows sobre a plataforma Linux de uma maneira mais simples.
Introdução
O Lazarus é um ambiente de desenvolvimento gráfico multi-plataforma que utiliza o compilador Free Pascal. Com ele é possível desenvolver aplicações de maneira muito semelhante ao Delphi. Na documentação wiki do Lazarus existe uma descrição (em inglês) de como realizar cross-compile de aplicações windows sobre a plataforma Linux. Porém, o principal objetivo deste artigo é descrever esta tarefa de uma maneira mais simples.
Instalação
Neste artigo serão utilizados Kurumin 6.1, Lazarus 0.9.20 e Freepascal 2.0.4, como será usado Kurumin ( que é um descendente do debian) baixei os pacotes para .deb no SourceForge, são eles:
fpc-crosswin32_2.0.4-060919_i386.deb
fp-compiler_2.0.4-1_i386.deb
fpc-src_2.0.4-1_i386.deb
fp-ide_2.0.4-1_i386.deb
fp-units-base_2.0.4-1_i386.deb
fp-units-db_2.0.4-1_i386.deb
fp-units-fcl_2.0.4-1_i386.deb
fp-units-fv_2.0.4-1_i386.deb
fp-units-gfx_2.0.4-1_i386.deb
fp-units-gnome1_2.0.4-1_i386.deb
fp-units-gtk_2.0.4-1_i386.deb
fp-units-gtk2_2.0.4-1_i386.deb
fp-units-misc_2.0.4-1_i386.deb
fp-units-net_2.0.4-1_i386.deb
fp-units-rtl_2.0.4-1_i386.deb
fp-utils_2.0.4-1_i386.deb
lazarus_0.9.20-0_i386.deb
fp-compiler_2.0.4-1_i386.deb
fpc-src_2.0.4-1_i386.deb
fp-ide_2.0.4-1_i386.deb
fp-units-base_2.0.4-1_i386.deb
fp-units-db_2.0.4-1_i386.deb
fp-units-fcl_2.0.4-1_i386.deb
fp-units-fv_2.0.4-1_i386.deb
fp-units-gfx_2.0.4-1_i386.deb
fp-units-gnome1_2.0.4-1_i386.deb
fp-units-gtk_2.0.4-1_i386.deb
fp-units-gtk2_2.0.4-1_i386.deb
fp-units-misc_2.0.4-1_i386.deb
fp-units-net_2.0.4-1_i386.deb
fp-units-rtl_2.0.4-1_i386.deb
fp-utils_2.0.4-1_i386.deb
lazarus_0.9.20-0_i386.deb
Para instalar no Kurumin use o comando:
# dpkg -i *.deb
E para resolver as dependências use:
# apt-get -f install
Configuração
O pacote fpc-crosswin32_2.0.4-060919_i386.deb fornece os utilitários do binutils e as units do Freepascal já compilados para realizar o cross-compile. A única configuração necessário é no arquivo /etc/fpc.cfg. Localize as estas linhas no arquivo:
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
E acrescente o seguinte:
#IFDEF win32
-XPfpc-i386-win32-
-FD~/usr/bin
#ENDIF
-XPfpc-i386-win32-
-FD~/usr/bin
#ENDIF
As units compiladas para o windows são instaladas no mesmo local das units do Linux, mas no subdiretório win32 que será igual a $fpctarget no momento da compilação. A configuração acrescentada no arquivo é para informar o prefixo do nome e o local onde estão os utilitários do binutils.
Fazendo o cross-compile
Para realizar o cross-compile, crie qualquer projeto no Lazarus e altere as configurações em Project > Compiler Options...
Na aba Paths altere LCL Widget Type para Win32
Na aba Code altere Target OS para Win32
Agora basta compilar o projeto e seu .exe será criado no Linux
Comentários