Multiplataforma Basico
Origem: A Bíblia do Lazarus, a enciclopédia livre.
Conteúdo |
Arquiteturas
A arquitetura de um computador é sua família de processador. Diferentes famílias de processadores possuem conjuntos distintos de instruções (OPCODES) nas quais o código-fonte é transformado pelo compilador. A seguir, uma breve descrição das arquiteturas suportadas pelo Free Pascal:
- i386: Está é uma arquitetura CISC de 32-bits descendente do PC-XT da IBM e que equipa a maior parte dos computadores hoje. Código compilado para esta arquitetura funciona em computadores 386 ou superiores. O programador pode utilizar instruções introduzidas em mais novas desta família, como as instruções MMX, mas o programa fica restrito aos processadores que suportam tais opcodes.
- AMD64: Descendente de 64 bits do i386 fabricado pela AMD.
- x86_64: Descendente de 64 bits do i386 da Intel.
- Power PC: Arquitetura RISC de 32-bits desenvolvida por um consórcio da IBM, Apple e Motorola em 1995 para equipar os modernos Macintosh. Os Mac se destacam em aplicações gráficas como editoriação eletrônica e multimídia.
- PPC64: Descendente de 64 bits do Power PC.
- SPARC: Arquitetura de Mainframes desenvolvida pela Sun. Possuí processador de 32-bits e é RISC. Em dezembro de 2005 a Sun tornou aberto o desenho do seu novo processador chamado UltraSPARC T1.
- ARM: Arquitetura RISC de processadores de baixa potência que equipam a maior parte dos modernos celulares e PDAs (Palms, PocketPC e similares).
- Motorola 68.000: Uma família CISC que iniciou como um competidor dos x86. Ela já equipou calculadoras da Texas Instruments e sistemas críticos do programa espacial americano. Tornou-se conhecida por equipar computadores de mesa como o Apple Macintosh, o Commodore Amiga, o Atari ST e outros. Hoje, estes sistemas estão obsoletos (no caso da Amiga e do Atari) ou utilizando outros processadores (no caso do Macintosh). Alguns sistemas operacionais, como o Debian, NetBSD e OpenBSD ainda suportam os processadores 68k. Recentemente eles voltaram a se tornar populares em PDAs.
Sistemas Operacionais
O sistema operacional (SO) é o programa mais importante do computador. Logo que o equipamento é ligado, ele entra em funcionamento e presta serviços para os programas e para o usuário. Ele ainda funciona como um intermediário entre o aplicativo e o hardware do computador.
Todos SOs listados abaixo são suportados pela LCL, o que permite o uso dos recursos de RAD do Lazarus, como o desenhador de janelas, os pacotes e objetos como Application, Screen e Mouse. Após a descrição do SO, há uma pequena lista dos widgetsets que você pode utilizar nele.
- Microsoft Windows: Apesar de ser conhecido por suas falhas de segurança, o impacto deste sistema no mundo é incalculável, devido ao enorme número de cópias instaladas. A LCL suporta o Windows 95 ou superior, incluindo a série NT. Suporte para o Windows CE está sendo implementado. Compilar para: win32 ou wince.
- OS / 2: Um sistema operacional gráfico de 32-bits desenvolvido pela IBM. No passado foi conhecido por sua estabilidade e por receber ótimas críticas, mas não se tornou popular como o Windows. Apesar disto, ele ainda é utilizando em algumas empresas. O OS/2 roda programas desenvolvidos para o Windows95. Compilar para win32.
- Linux: Compilar para gtk, gtk2 ou gnome.
- FreeBSD: Compilar para gtk, gtk2 ou gnome.
- Outros UNIX: Existem outras versões do UNIX, o SO mais utilizado em servidores. Muitas caracteristicas da internet foram moldadas por ele, como a barra "/" dos diretórios. Uma versão do UNIX é suportada pelo Lazarus desde que possa executar binários em formato ELF e tenha um servidor X rodando. Compilar para gtk, gtk2 ou gnome.
- Mac OS X: Compilar para carbon, gtk, gtk2 ou gnome.
- Solaris: Compilar para gtk, gtk2 ou gnome.
Existem outros SOs suportados pelo compilador Free Pascal, mas não pela LCL, ou seja, é possível desenvolver programas para eles utilizando a IDE do Free Pascal, mas não o Lazarus. Alguns destes nunca serão suportados, pois não possuem natureza gráfica, como o DOS. Outros serão suportados assim que uma interface for escrita, como o Zaurus, Windows CE, Symbian, etc.
- Zaurus:
- Palm OS:
- DOS: MS-DOS, o IBM PC-DOS, e o predecessor deles, o QDOS, são sucessores do CP/M (Control Program / (for) Microcomputers), o qual foi o sistema operacional dominante para os computadores de 8 bits baseados no Intel 8080 e no Zilog Z80. O QDOS foi desenvolvido inicialmente pela Seattle Computer Products por Tim Patterson como uma variante do CP/M e foi posteriormente comprado pela Microsoft e renomeado para MS-DOS. Ele foi um dos primeiros sistemas operacionais para a plataforma PC, e o primeiro a se popularizar nesta plataforma. Embora ele seja um SO de 16-bits, o compilador Free Pascal é capaz de gerar executáveis de 32-bits para ele, utilizando uma tecnologia conheciada como "Extensor do DOS". O Free Pascal não é capaz de gerar executáveis de 16-bits, utilize o Turbo Pascal 5.5 disponível gratuitamente para download no website da Borland para isto. Compile para Go32V2, o nome do extensor do DOS utilizado pelo Free Pascal.
- Symbian:
Delimitadores de diretórios
Diferentes SOs utilizam diferentes simbolos especiais para separar os diretórios em um caminho. Alguns simbolos utilizados são:
- "\" Windows, DOS, OS/2, Windows CE
- "/" Linux, Mac OS X, FreeBSD, UNIXes.
Para evitar problemas com os diferentes delimitadores, basta utilizar uma constante chamada PathDelim, que o representa independentemente da plataforma. Por exemplo, 'Meu Programa\Videos' poderia ser escrito como 'Meu Programa' + PathDelim + 'Videos'.
Partes dependentes de plataforma ($IFDEFs)
A maior parte do código de um aplicativo, se não todo, pode ser escrito com chamadas da LCL, RTL e FCL e outras bibliotecas multiplataformas. Neste caso, ele poderá ser compilado sem modificações para todos sistemas suportados pela LCL ou pelas bibliotecas que utilizar.
Em muitos outros casos, porém, existe a necessidade de utilizar recursos avançados que só existem em algumas plataformas, ou recursos não disponíveis na LCL e outras bibliotecas multiplataformas, como ActiveX, OLE e DirectX no Windows ou o X11 no Linux. Isto também pode ocorrer devido a exigências profissionais para que o aplicativo suporte determinada tecnologia dependente de plataforma.
Nestes casos devemos utilizar a compilação condicional e implementar a função diferentemente para cada plataforma. Isto é feito utilizando a diretiva de pré-compilação $IFDEF. Basta colocar o código dependente de plataforma entre {$IFDEF <plataforma>} .... {$ENDIF}. Desta maneira todas as partes dependentes de plataforma do programa ficam delimitadas e ele pode compilar para outros sistemas.
Exemplo:
{$IFDEF Win32}
// chamar API do Windows
{$ENDIF}
{$IFDEF LCLGtk}
// chamar Gtk
{$ENDIF}
Localização de arquivos e recursos
Um problema comum em aplicativos multiplataforma é a localização dos arquivos e recursos do programa, como imagens, sons, vídeos, bancos de dados, arquivos de configuração, etc.
No Windows, é comum que estes arquivos estejam no diretório do executável. Em outros sistemas, como os UNIX, é impossível para um programa determinar seu diretório, devido a maneira como o shell opera, além da existência de links simbólicos. Ao executar um aplicativo pelo link simbólico, ele pensaria que seu diretório é o do link! Nestes sistemas, os arquivos devem ser colocados em diretórios especiais, como '/usr/share/MeuAplicativo', mas o nome de tais diretórios muda de distribuição em distribuição e de SO para SO. Uma saída é colocar o nome do diretório dos recursos em um arquivo de configuração e modifica-lo para cada sistema operacional ou distribuição suportados.

