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.

Programa-exemplo

Personal tools