Sign in Join
Wiki copytemporary

Lazarus Faq/pt: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Geral
22
33### Onde eu posso encontar mais FAQ?
44
55Veja o [website oficial](http://www.lazarus.freepascal.org). Há um outro FAQ também.
66
77### Por que os binários gerados são tão grandes?
88
99Os binários são grandes porque eles incluem uma série de informações de depuração necessárias para usar o gdb (GNU Debugger).
1010
1111O compilador tem uma opção para remover a informação de depuração do executável (-Xs), mas devido ao um bug no compilador (versão 2.0.2 ou anterior), isso não funciona corretamente. Isso foi arrumado na versão de desenvolvimento do compilador.
1212
1313Você pode usar um programa chamado "strip" para remover os símbolos de depuração do arquivo executável. Ele está localizado no diretório lazarus\pp\bin\i386-win32\\.
1414
1515Simplesmente digite "strip --strip-all \<seu arquivo executável com o caminho\>" na linha de comando.
1616
1717Se você deseja deixar seu programa ainda menor, você deve tentar também o UPX ([1](http://upx.sourceforge.net/)). O UPX é um ótimo compressor de executável. Ele não inclui memória DUPLA overhead no lugar da descompressão. Ele também tem uma rápida descompressão (~10 MB/sec em um Pentium 133).
1818
1919Para usar upx simplesmente digite "upx \<seu arquivo executável com o caminho\>" na linha de comando.
2020
2121após usar ambos strip e upx um simples programa Lazarus GUI terá:
2222
2323- ~ 700kb no Linux
2424- ~ 420kb no Windows
2525
2626Uma resposta mais detalhada está dada em [[Size Matters]].
2727
2828Também é importante notar que um programa hello world no lazarus já inclui uma imensa quantia de recursos. Isso inclui:
2929
3030- Biblioteca de manipulação de XML
3131- Biblioteca de manipulação de Imagem para arquivos png, xpm, bmp e ico
3232- Aproximadamente todos os widgets da Biblioteca de Componentes Lazarus
3333- Toda a Biblioteca de RunTime do Free Pascal
3434
3535Portanto ele é muito grande, mas ele já inclui uma quantia de aproximadamente tudo que uma aplicação real não-trivial precisará.
3636
3737O tamanho do executável do Lazarus inicia grande, mas cresce muito devagar, por causa do compilador Free Pascal e a forma que os formulário lazarus operam. Um projeto c++ (veja um exemplo, mas aplique para outras linguagens / ferramentas também) inicia muito pequeno no hello world, mas rapidamente aumenta exponencialmente quando você precisa de recursos para escrever uma aplicação não-trivial.
3838
3939![](/wiki-images/d/de/Lazarus_vs_cpp.png)
4040
4141### Porque a vinculação é lenta no Windows?
4242
4343Falando de modo geral, a compilação no Windows leva mais tempo que em outras plataformas porque o GNU Linker utilizado pelo Free Pascal é lento neste plataforma. Este problema afeta apenas o Windows, e é somente mau em computadores relativamentes velhos (com menos de 1Ghz) e computadores com pouca RAM (128MB ou menos).
4444
4545Também, se você usar vinculação inteligente (smartlink) na LCL a vinculação será mais lenta. Um estudo sobre isso está localizado aqui: [[File size and smartlinking]]
4646
4747Um vinculador interno foi desenvolvido, e está pronto, mas somente estará disponível quando Free Pascal 2.2 for lançado (naturalmente ele já está disponível via subversion). Ele diminuirá o tempo de vinculação drasticamente.
4848
4949### Eu preciso de pc386.cfg ou fpc.cfg?
5050
5151Você precisa somente de fpc.cfg. Nesse caminho o compilador sabe onde procurar as bibliotecas.
5252
5353### Como eu compilo o Lazarus?
5454
5555Faça algo como:
5656
57-`$ cd lazarus`\
58-`$ make`
57+```text
58+$ cd lazarus
59+$ make
60+```
5961
6062### Como eu crio outros projetos baseados na LCL
6163
6264Se você não pode usar o IDE para criar suas aplicações, use lazbuild. Ele é uma versão por linha de comanda do IDE para criar projetos e pacotes lazarus. Se você deseja criar aplicações LCL sem o IDE e sem o lazbuild, adicione as seguintes linhas para o final do seu *fpc.cfg*
6365
64-`  # caminho de busca para outros toolkits (Linux)`\
65-`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{SeuToolKit}`
66+```text
67+ # caminho de busca para outros toolkits (Linux)
68+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{SeuToolKit}
69+```
6670
67-`  # caminho de busca para outros toolkits (Windows)`\
68-` -Fu/{SeusDiretorioLazarus}/components/units/{SeuToolKit}`
71+```text
72+ # caminho de busca para outros toolkits (Windows)
73+ -Fu/{SeusDiretorioLazarus}/components/units/{SeuToolKit}
74+```
6975
7076
7177Onde {SeuToolKit} pode ser *gtk2*, *gnome*, *qt* ou *win32* e execute:
7278
7379
7480ppc386 seu.projeto.pp
7581
7682**Dica:** Não esqueça de instalar os pacotes de desenvolvimento para seu toolkit, caso contrário você poderá receber algo como [[Linker message: cannot find -l]].
7783
7884### Qual versão do FPC é requerida?
7985
80862.0.4 para MacOSX e 2.2.0 para todos os outros sistemas. Aviso: A versão 2.2.0 tem um bug no MacOSX com nomes de arquivos sensíveis a maiuscúlas-minúsculas. Você pode também usar a versão svn do fpc 2.2.1 e 2.3.x.
8187
8288### Eu não consigo compilar Lazarus
8389
84901. Verifique se o seu compilador tem a versão correta.
85912. Verifique se as bibliotecas fpc são de versão idêntica.
86923. Verifique se você tem um fpc.cfg e não um antigo ppc386.cfg
87934. Verifique também o "FAQs dependentes de SO"
8894
8995### Quando eu tento compilar um projeto, eu tenho um erro
9096
9197#### "Cannot find Unit interfaces". Como resolver isso?
9298
9399Esta unit compilada pode ser encontrada em {LazarusDir}\lcl\units\\{TargetCPU}\\{TargetOS}\\{LCLWidgetSet}\interfaces.ppu.
94100
95101Se você selecionar um widgetset diferente do que o que você utilizou para criar lazarus, você precisa criar a LCL para este widgetset.
96102
97103Se ele estiver lá, você vai receber este erro, você esta usando um compilador diferente / rtl para compilar seu projeto do que o utilizado para compilar seu Lazarus IDE. Você pode fazer uma das seguintes opções:
98104
99105- Recriar a LCL (ou o Lazarus completamente) com o compilador selecionado no Environmnent Options. Você pode isso
100106
101107com Tools -\> Build Lazarus. Antes de fazer isso, verifique as configurações atuais em Tools -\> Configure Build Lazarus.
102108
103109- Mude o compilador em Environment Options para o utilizado por você para compilar Lazarus.
104110
105111Veja atentamente também em Environment Options para ver se você esta usando os caminhos corretos para o diretório Lazarus e o diretório dos fontes FPC. Verifique que este este representa somente uma versão no arquivo de configuração do compilador fpc.cfg - ele deve residir em /etc/ para sistemas Linux/Unix ou no mesmo diretório que o do compilador fpc para sistemas Windows. Se fez update do seu compilador algumas modificações vão ser encontradas para uma versão nova; podem ser encontradas no diretorio do software montou seu novo compilador.
106112
107113### Quando eu tento compilar projetos Delphi em Lazarus, eu tenho erro
108114
109115#### na linha :{\$R *.DFM} Como eu posso resolver este problema ?
110116
111117Lazarus (ou melhor, Linux) não entende de recursos), Deste modo você não pode usá-los no caminho Delphi/win32 executado. De qualquer modo Lazarus usa um metódo considerável compátivel com esse. Você pode entretanto usar seus layouts Delphi (arquivos .dfm) se você usar as seguintes etapas:
112118
113119- Você precisa de uma versão textual dos arquivos .dfm. D5 e maior são feitos com um padrão. Se você tem arquivos antigos: ALT-F12 para ver o layout como texto e colar/copiar. Quando você tem um arquivo de texto .dfm, copia corretamente ele para um arquivo .lfm.
114120- Criar um arquivo lazres (em lazarus/tools) lazres seuform.lrs seuform.lfm
115121- Adicionar a seguinte seçao de inicialização
116122
117-`     initialization`\
118-`     {$I yourform.lrs}`
123+```text
124+ initialization
125+ {$I yourform.lrs}
126+```
119127
120128Por favor tenha em mente que nem todas as propriedades do dfm são suportadas ainda por lazarus, deste modo seu poder pode "dar pau".
121129
122130#### 'Identifier not found LazarusResources'.
123131
124132Quando cria um formulário o Lazarus automaticamente adiciona alguns units extra para seção uses da unit do seu formulário. Durante a conversão de uma unit delphi para uma unit Lazarus isto não ocorre. Assim você precisa adicionar LResources para a seção uses da unit do seu form.
125133
126134### Quando acesso os eventos de objetos (ex: o evento onclick de um botão) recebo a seguinte mensagem de erro: ERROR unit not found: stdCtrls
127135
128136Certifique, em Project -\> Project Inspector, que o seu projeto depende no pacote 'LCL' e que você tem instalado o fontes do FPC.
129137
130138Lazarus é uma IDE e biblioteca de componentes visuais LCL. Todo outro material, como IO, Database, FCL e RTL são fornecidos por FPC. A IDE precisa dos caminhos para todos os fontes.
131139
132140O caminho do fonte FPC pode ser ajustado via: Environment -\> General Options -\> Files -\> FPC source path
133141
134142### Como adicionar um pequeno arquivo no executável, sem necessitar de um arquivo separado. Como adicionar um ressource?
135143
136144Por exemplo:
137145
138-`/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
146+```text
147+/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...
148+```
139149
140150criará um soundlrs do sound1.wav e sound2.wav.
141151
142152Então inclua *antes* do arquivo de formulário lrs:
143153
144-`...`\
145-`initialization`\
146-`{$i unit1.lrs} // este é o arquivo de recurso principal (primeiro)`\
147-`{$i sound.lrs} // arquivo de recurso definido pelo usuário`\
154+``` pascal
155+...
156+initialization
157+{$i unit1.lrs} // este é o arquivo de recurso principal (primeiro)
158+{$i sound.lrs} // arquivo de recurso definido pelo usuário
148159
149-`end.`
160+end.
161+```
150162
151163Em seu programa você pode usar então:
152164
153-`Sound1AsString:=LazarusResources.Find('sound1').Value;`
165+``` pascal
166+Sound1AsString:=LazarusResources.Find('sound1').Value;
167+```
154168
155169### Qual o significado das várias extensões de arquivos usadas pelo Lazarus?
156170
157171O Tutorial [Os "Arquivos do Lazarus"](http://wiki.lazarus.freepascal.org/index.php/Lazarus_Tutorial/pt#Os_arquivos_do_Lazarus) explica algumas extensões em um exemplo. Aqui uma breve lista:
158172
159173`*.lpi`
160174Arquivo de Informação de Projeto Lazarus (armazenado em XML; Contém configurações especificas do projeto)
161175
162176`*.lpr`
163177Arquivo de Projeto do Lazarus; contém o fonte Pascal do programa principal
164178
165179`*.lfm`
166180Arquivo de Formulário Lazarus; contém informação de configuração de todos os objetos em um formulário (armazenados em um formato especifico do Lazarus; as ações são descritas pelo código-fonte Pascal em um arquivo `*.pas` correspondente)
167181
168182`*.pas` ou `*.pp`
169183Unit com o Código Pascal (normalmente para um formulário, armazenado em um arquivo `*.lfm` correspondente)
170184
171185`*.lrs`
172186Arquivo de Recurso do lazarus (este é um arquivo gerado; não confunda com um arquivo de recurso do Windows).
173187
174188Este arquivo pode ser criado com a ferramenta lazres (no diretório Lazarus/Tools) usando a linha de comando: lazres myfile.lrs myfilres.lfm
175189
176190`*.ppu`
177191Unit Compilada
178192
179193`*.lpk`
180194Arquivo de Informação de Pacote Lazarus. (armazenado em XML; contém as configurações do pacote especificado)
181195
182196### Como posso ver o resultado ou saida da depuração?
183197
184198A LCL tem na procedure LCLProc o envio de saida de debug:
185199
186200- **DebugLn:** funciona como writeLn, mas só aceita strings.
187201- **DbgOut:** funciona como o Write, mas só aceita strings.
188202
189203Em circunstancias normais o resultado é mostrado no stdout. se o stdout estiver fechado, (por exemplo quando a aplicação é {\$AppType Gui} ou compilada com -WG em windows), nenhum resultado é visivel.
190204
191205O Resultado do debug pode tambem ser impresso em arquivo. A unit LCLProc verifica na sua inicialização os parametros da linha de comando '--debug-log=\<file\>' se achar, ele envia o resultado para \<file\>.
192206
193207Se não encontrar um paramêtro de linha de comando --debug-log, ele verifica se uma variável de ambiente xxx_debullog existe, onde xxx é o programa sem a extensão. Para lazarus isto será lazarus_debuglog. Se esta variável de ambiente existe usa esse tipo de arquivo, Exemplo, se você fizer:
194208
195-`set lazarus_debuglog=c:\lazarus\debug.txt`
209+```text
210+set lazarus_debuglog=c:\lazarus\debug.txt
211+```
196212
197213saída do debug será escrita em c:\lazarus\debug.txt.
198214
199215Como isto está implementado em lclproc, toda aplicação usando lclproc, podera usar esta facilidade de saida de log.
200216
201217Debuging Lazarus
202218Mais aproveitável para windows:
203219
204220Se você precisa de resultado em um console, adicione {\$APPTYPE console} em lazarus.pp ; Então recrie o Lazarus.
205221
206222### Eu arrumei/implementei algo no lazarus. Como eu posso adicionar minhas mudanças para o fonte original do lazarus?
207223
208224Crie um patch e envie para os desenvolvedores. Para detalhes veja [[Creating A Patch/pt]].
209225
210226## Onde esta ... definido
211227
212228### Constantes de Teclas Virtuais
213229
214230Constantes de Teclas Virtuais são definidas em LCLType. Adicione LCLtype em sua uses.
215231
216232## Usando a IDE
217233
218234### Como eu posso usar "Completador de identificador"?
219235
220236Você pode invocar o "Completador de identificador" pressionando \[ctrl\]\[space\]. Sob o item de menu *Environment -\> Editor Options -\> Code Tools -\> Automatic Features* você pode ajustar com que velocidade isso deve acontecer automaticamente
221237
222238## Linux
223239
224240### Como eu posso depurar no Linux sem a IDE?
225241
226242Primeiro de tudo você precisa de um depurador. gdb é o depurador padrão no linux e este é um GUI-frontends disponível. Um comum frontend é ddd, que é uma parte da maioria das distribuições comuns. Para compilar lazarus/lcl com depuração-informação você deve então usar um dos seguinte comandos para iniciar a seção de depuração:
227243
228-` $ make clean; make OPT=-dDEBUG`\
229-` $ ddd lazarus`
244+```text
245+ $ make clean; make OPT=-dDEBUG
246+ $ ddd lazarus
247+```
230248
231249É avisado que ddd não é aceitável como por exemplo o depurador Lazarus. Especialmente se ele vier para vizualizar o conteúdo de uma variável você tem que levar em conta que ddd/gdb são case-sensitive uma vez que Pascal é case-insensitive. Portanto você tem que tipificar todas os nomes de variáveis em maiúsculas para ver o conteúdo delas. Para mais informação dê uma olhada nos manuais fpc.
232250
233251### Eu posso depurar agora, mas ddd não procura meus fontes ou reivindicações que eles contém no código. O que fazer?
234252
235253Este é um problema de caminho associado com qualquer gdb ou ddd. Você pode evitar por isso
236254
237255- Use o comando "Change directory" (Mudança de Diretório) do menu ddd e escolha o diretório onde os sources estão localizados. A desvantagem deste método é que você agora não pode usar o source do programa iniciado com (ex: Lazarus). Deste modo ele pode ser necessário para mudar o diretório em múltiplas horas.
238256- Em ddd vá \[Edit\] \[gdb-settings\] e determine o search-path
239257- Crie um arquivo \$(HOME)/.gdbinit como:
240258
241-`     directory /your/path/to/lazarus`\
242-`     directory /your/path/to/lazarus/lcl`\
243-`     directory /your/path/to/lazarus/lcl/include`
259+```text
260+ directory /your/path/to/lazarus
261+ directory /your/path/to/lazarus/lcl
262+ directory /your/path/to/lazarus/lcl/include
263+```
244264
245265### Eu recebo um erro durante a vinculação que states /usr/bin/ld can\\'t find -l
246266
247267**Distribuições Baseadas em Pacotes**
248268Você precisa instalar o pacote que fornece os arquivos lib\<somelib\>.so ou lib\<somelib\>.a. Bibliotecas dinâmicas do Linux tem extensão .so, enquanto bibliotecas estáticas tem extensão .a. Em algumas distros Linux você tem instalado o pacote (rpm, deb) \<nomedopacote\> que fornece \<some lib\>, mas você também precisa do pacote de desenvolvimento (rpm, deb), normalmente chamado \<nomedopacote\>-dev, que contém a .a (biblioteca estática) e/ou o .so (biblioteca dinâmica).
249269
250270**Distribuições e Manuais de Compilação Baseados em Fonte (LFS)**
251271Assegure-se que ali esta uma lib\<somelib\>.a no caminho, e que ela contém a versão correta. para deixar o vinculadores procurar a biblioteca dinâmica (dynamic library), crie um symlink chamado lib\<some lib\>.so para lib\<some lib\>\<version\>-x,y.so se necessário(e/ou para biblioteca estática; lib\<some lib\>.a para lib\<some lib\>\<version\>-x,y.a).
252272
253273**FreeBSD**
254274Como distros baseadas em fonte, também assegure-se que você tem -Fl/usr/local/lib no seu fpc.cfg e/ou caminho de biblioteca do Lazarus. Mantenha em mente que GTK1.2 tem "gtk12" como nome de pacote em FreeBSD. (igualmente para glib)
255275
256276**NetBSD**
257277Como distros baseadas em fonte,
258278
259279também assegure-se que você tem -Fl/usr/pkg/lib no seu fpc.cfg e/ou caminho de biblioteca do Lazarus.
260280
261281### Como eu converto um projeto Kylix 2 em um Projeto Lazarus?
262282
263283Aproximadamente o mesmo caminho como convertendo um projeto Kylix em um projeto Delphi/VCL.
264284
265285A LCL (Biblioteca de Componentes Lazarus) prova compatibilidade com VCL. Kylix CLX prova compatibilidade com QT. Aqui estão umas dicas gerais:
266286
267287- renomeie todas as CLX Q-units usadas como QForms, QControls, QGraphics, ... em contra-parte em sua VCL: Forms, Controls, Graphics, ...
268288- Adicione LResources na seção uses de todos dos fontes de todos os formulários
269289- renomeie ou copie todos .xfm arquivos como arquivos .lfm.
270290- renomeie ou copie arquivo .dpr para arquivo .lpr.
271291- remova a diretiva {\$R *.xfm}
272292- remova a diretiva {\$R *.xfm}
273293- adicione a diretiva {\$mode objfpc}{\$H+} ou {\$mode delphi}{\$H+} para arquivos .pas e .lpr
274294- adicione uma seção initialization em cada fonte de formulário e adicione uma diretiva include para o arquivo .lrs (arquivo de recurso lazarus):
275295
276-` initialization`\
277-`   {$I unit1.lrs}`
296+```text
297+ initialization
298+ {$I unit1.lrs}
299+```
278300
279301
280302Os arquivos .lrs podem ser criados via a ferramenta lazres em: (lazarusdir)/tools/lazres.
281303
282304Por exemplo: ./lazres unit1.lrs unit1.lfm
283305
284306- Estabeleça diferenças. A LCL ainda não suporta todas propriedades da VCL e a CLX não é completamente compatível com a VCL.
285307
286308### Quando compilo Lazarus o compilador não encontra uma unit. e.g.: gtkint.pp(17,16) Fatal: Can\\'t find unit GLIB
287309
2883101\. Verifique uma limpeza de reconstrução: execute um 'make clean all'
289311
2903122\. Verifique se o compilador tem a versão correta (1.0.10 ou 1.1)
291313
2923143\. Verifique se o compilador está utilizando o arquivo de configuração certo. A instalação normal cria /etc/fpc.cfg. Mas fpc também procura por ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg e ele utiliza somente o primeiro encontrado.
293315
294316
295317**Dica:** Você pode ver qual arquivo de configuração é usado com 'ppc386 -vt bogus''
296318
2973194\. Verifique se o arquivo de configuração (/etc/fpc.cfg) contém os paths certo para seus fpc libs (bibliotecas fpc). Ali é necessário estar três linhas como essas:
298320
299-`   -Fu/usr/lib/fpc/$version/units/$target`\
300-`   -Fu/usr/lib/fpc/$version/units/$target/*`\
301-`   -Fu/usr/lib/fpc/$version/units/$target/rtl`
321+```text
322+ -Fu/usr/lib/fpc/$version/units/$target
323+ -Fu/usr/lib/fpc/$version/units/$target/*
324+ -Fu/usr/lib/fpc/$version/units/$target/rtl
325+```
302326
303327
304328A primeira parte destes caminhos (/usr/lib/fpc) depende do seu sistema. Em alguns sistemas essa pode ser por exemplo /usr/local/lib/fpc/... .
305329
306330**Dica:** Você pode ver os seus searchpaths com 'ppc386 -vt bogus'
307331
3083325\. Verifique que o arquivo de configuração (/etc/fpc.cfg) não contém os search paths para os arquivos fontes lcl (.pp, .pas):
309333
310-` forbidden: -Fu(lazarus_source_directory)/lcl`\
311-` forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
334+```text
335+ forbidden: -Fu(lazarus_source_directory)/lcl
336+ forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
337+```
312338
313339
314340Se você necessita adicionar a lcl em todos os seus projetos fpc, certifique-se que os dois paths parecem como seguinte e estão atrás do, acima descrito, caminho das bibliotecas fpc:
315341
316-` -Fu(lazarus_source_directory)/lcl/units`\
317-` -Fu(lazarus_source_directory)/lcl/units/gtk`
342+```text
343+ -Fu(lazarus_source_directory)/lcl/units
344+ -Fu(lazarus_source_directory)/lcl/units/gtk
345+```
318346
3193476\. Verifique se a unit que falta (glib.ppu) existe em seu diretório de bibliotecas fpc. Por exemplo o gtk.ppu pode ser encontrado em /usr/lib/fpc/\$version/units/linux/gtk/. Se ele não existir, a biblioteca fpc está corrompido e deve ser reinstalada.
320348
3213497\. Verifique se os fontes estão em um diretório NFS montado. Em alguns casos as atualizações NFS criam arquivos incorretamente. Plz tente mover os fontes em um não-diretório NFS e compile ali.
322350
323351### Eu tenho instalada a versão binária, mas quando compilo um simples projeto Lazarus dá: Fatal: Can\\'t find unit CONTROLS
324352
325353Provavelmente você está usando um antigo pacote fpc, do que aquele usado para construção dos binários do lazarus. A melhor solução é baixar os fontes e compilar lazarus manualmente Você pode baixar os fontes instantaneamente ou pegar o fonte via cvs:
326354
327-` $ bash`\
328-` $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS`\
329-` $ cvs login`\
330-` Dica: A senha é `***`cvs`***` (minúscula).`\
331-` $ cvs -z3 checkout lazarus`\
332-` $ cd lazarus`\
333-` $ make`
355+```text
356+ $ bash
357+ $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS
358+ $ cvs login
359+ Dica: A senha é cvs (minúscula).
360+ $ cvs -z3 checkout lazarus
361+ $ cd lazarus
362+ $ make
363+```
334364
335365Certifique-se que lazarus cria um novo diretório fonte: Environment-\>General Options-\>Files-\>Lazarus Directory Top
336366
337367### Lazarus compila, mas ao vincular falha com: libgdk-pixbuf not found
338368
339369Instale a biblioteca gdk-pixbuf para gtk1.x ou então desative o uso:
340370
341371Procure a biblioteca gdk-pixbuf em:
342372
343373RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
344374
345375Pacotes Debian: libgdk-pixbuf-dev
346376
347377Fontes: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
348378
349379Para desativar o uso em Lazarus: Em Tools-\>Configure "Build Lazarus" adicione a opção '-dNoGdkPixBufLib' ou uma linha de comando: "make clean all OPT=-dNoGdkPixBufLib".
350380
351381### Eu tenho SuSE e eu recebo /usr/bin/ld: cannot find -lgtk Error: Error while linking
352382
353383Suse instala os gtk devel libs em /opt/gnome/lib, que não esta no diretorio comum dos arquivos .lib. simplesmente adicione no /etc/fpc.cfg.
354384
355-`(-Fl/opt/gnome/lib).`
385+```text
386+(-Fl/opt/gnome/lib).
387+```
356388
357389### Lazarus quebra com erro de runtime 211 após eu instalar um componente
358390
359391Após eu ter instalado um componente, Lazarus quebra com a seguinte mensagem:
360392
361-`Threading has been used before cthreads was initialized.`\
362-`Make cthreads one of the first units in your uses clause.`\
363-`Runtime error 211 at $0066E188`
393+``` pascal
394+Threading has been used before cthreads was initialized.
395+Make cthreads one of the first units in your uses clause.
396+Runtime error 211 at $0066E188
397+```
364398
365399Como eu posso arrumar isso?
366400
367401Seu récem-instalado componente esta usando threads. Fpc em *nix não inclui automaticamente suporte à threading, mas ele pode ser inicializado. Esta inicialização se completa na unit cthreads. Todas as aplicações que usam o componente precisam adicionar esta unit para a clausula uses do programa principal. Seu Lazarus não é uma excessão. Isto pode ser feito de duas formas:
368402
3694031\) Modifique o fonte da ide/lazarus.pp: adicione a unit cthreads para a clausula uses, assim ele fica parecida com:
370404
371-`uses`\
372-`  //cmem,`\
373-`  cthreads, `\
374-`  {$IFDEF IDE_MEM_CHECK}`\
375-`...`
405+``` pascal
406+uses
407+ //cmem,
408+ cthreads,
409+ {$IFDEF IDE_MEM_CHECK}
410+...
411+```
376412
377413e recrie lazarus.
378414
3794152\) Afim de evitar modificar o arquivo lazarus.pp, um opção no compilador fpc pode ser usada. Desde In order to avoid modifying lazarus.pp file, a fpc compiler option could be used. Uma vez que o pacote que usa threads for compilado, abra o menu Tools-\>Configure "build Lazarus". O diálogo Configure "build Lazarus" deverá ser mostrado, no campo "Options:" digite -Facthreads e então pressione o botão "OK". A próxima etapa é instalar o pacote. Lazarus deverá ser criado com a opção -Facthreads a qual agirá no programa principal como se a unit cthreads fosse a primeira na clausula uses.
380416
381417*Dica:* Talvez seu antigo (não-quebrado) executável lazarus é armazenado em lazarus.old no mesmo diretório que o executável quebrado.
382418
383419### Quando eu executo um program com threads eu recebeo um erro de runtime 232
384420
385421A mensagem de erro completa é:
386422
387-`This binary has no thread support compiled in.`\
388-`Recompile the application with a thread-driver in the program uses`\
389-`clause before other units using thread.`\
390-`Runtime error 232`
423+``` pascal
424+This binary has no thread support compiled in.
425+Recompile the application with a thread-driver in the program uses
426+clause before other units using thread.
427+Runtime error 232
428+```
391429
392430**Solução**: Adicione cthreads como primeira unit para a sua clausula uses do seu programa principal, normalmente o arquivo .lpr.
393431
394432### Eu tenho Ubuntu Breezy e meus fontes em Lazarus IDE parecem muito grande
395433
396434Se Lazarus é compilado com Gtk1.2, as configurações em Gnome Preferences/Font não tem nenhum efeito como eles são relatados por Gtk2. Você pode tentar essa solução Crie um arquivo nomeado .gtkrc.mine em seu diretório home (se ele já não existir ali) e adicione essas linhas para ele:
397435
398436 style "default-text" {
399437 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
400438 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
401439 }
402440
403441 class "GtkWidget" style "default-text"
404442
405443### Como eu posso compilar um programa para Gtk2?
406444
407445Até o momento, a ide compilada em Gtk2 é um pouco instável, mas você pode compilar programas para Gtk2 usando a IDE Gtk1.
408446
409447Para começar, recompile LCL para Gtk2. Vá até o menu "Tools"-\>"Configure Build Lazarus" e ajuste a LCL para clean+build e todo o resto tudo como none.
410448
411449Agora click em Ok e vá até o menu "Tools"-\>"Build Lazarus"
412450
413451Agora você pode compilar seu programa com Gtk2 indo em Opções de Compilação e mudando o widgetset para Gtk2.
414452
415453## Windows
416454
417455### Quando eu repito a compilação, eu recebo: The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time.
418456
419457No diretório do compilador existe um arquivo de script OS2 nomeado make.cmd. NT vê isto tambem como um arquivo de script, então remova porque em NT ele não é necessario.
420458
421459### Quando eu repito a compilação, eu recebo: make\[3\]: ./ppc1.exe: Command not found
422460
423461Eu não sei porque mas de alguma forma make tem perdido este caminho. Tente repetir com um diretório base determinado como: make cycle BASEDIR=your_fpc_source_dir_herecompiler
424462
425463### Quando eu tento criar(make) Lazarus eu recebo:
426464
427465#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
428466
429467Você precisa atualizar o seu make..
430468
431469#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
432470
433471Verifique se você não instalou o FPC em um caminho com espaços no nome. O Makefile não suporta isso.
434472
435473### Como eu posso dar a meu programa um aspecto XP como lazarus tem?
436474
437475Se você tem um myprogram.exe então crie um arquivo chamado myprogram.exe.manifest e copie-cole para o arquivo isto:
438476
439-`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`\
440-`<assembly xmlns="`[`urn:schemas-microsoft-com:asm.v1`](urn:schemas-microsoft-com:asm.v1)`" manifestVersion="1.0">`\
441-`<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>`\
442-`<description>programom</description>`\
443-`<dependency>`\
444-`  <dependentAssembly>`\
445-`   <assemblyIdentity`\
446-`     type="win32"`\
447-`     name="Microsoft.Windows.Common-Controls"`\
448-`     version="6.0.0.0"`\
449-`     publicKeyToken="6595b64144ccf1df"`\
450-`     language="*"`\
451-`     processorArchitecture="*" />`\
452-`  </dependentAssembly>`\
453-`  </dependency>`\
454-`</assembly>`
477+``` pascal
478+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
479+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
480+<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>
481+<description>programom</description>
482+<dependency>
483+ <dependentAssembly>
484+ <assemblyIdentity
485+ type="win32"
486+ name="Microsoft.Windows.Common-Controls"
487+ version="6.0.0.0"
488+ publicKeyToken="6595b64144ccf1df"
489+ language="*"
490+ processorArchitecture="*" />
491+ </dependentAssembly>
492+ </dependency>
493+</assembly>
494+```
455495
456496Voila! XP looks.
457497
458498### Quando eu executo um programa Windows criado em Lazarus ele inicia uma janela DOS
459499
460500Especifique o argumento -WG (Windows GUI) na linha de comando do compilador ou no Lazarus IDE verifique a checkbox Windows GUI na caixa de dialogo compiler options (menu Project -\> Compiler Options -\> Linking -\> target OS Specific options.
461501
462502## Mac OS X
463503
464504### Por que ao compilar um projeto falha com 'unknown section attribute: no_dead_strip'?
465505
466506Inativo 'code stripping' não é suportado pelo assembler e pelo linker antes do Mac OS X 10.4.0. Desativa as opções de compilador
467507
468508- Code \> Unit style \> Smart linkable (-CX)
469509- and Linking \> Link Style \> Link smart (-XX)
470510
471511## Licenciando
472512
473513### Eu posso criar aplicações comerciais com o Lazarus ?
474514
475515Sim, a LCL é licenciada sob LGPL com uma exceção, que permite a você linká-la estaticamente sem lançar o fonte de sua aplicação. Modificações e otimização da LCL devem ser distribuidos com o fonte. Lazarus, o IDE, é licenciado sob a GPL.
476516
477517### Por que alguns componentes tem seu uso restringido em aplicações comerciais ?
478518
479519Lazarus vem com componentes adiconais, que são desenvolvidos por terceiros. Esses componentes tem licenças variadas. Se você pretende usar esses componentes é preciso ver a licença nos arquivos fontes desses pacotes. Muitos desses componentes de terceiros estão no diretório "components".
480520
481521### Como eu sei se um Componente é parte da LCL ?
482522
483523TODAS as unidades LCL estão no diretório "lcl". Uma lista de unidades pertencentes à LCL podem ser encontradas em [2](http://lazarus-ccr.sourceforge.net/docs/lcl/). Se seu código utilizar unidades não relacionadas nessa página, você pode estar usando um componente que não é parte da LCL.
484524
485525### Eu posso criar plug-ins comerciais com o Lazarus ?
486526
487527Sim, o parte IDEIntf do IDE é licenciado sob a LGPL com a mesma excessão, de modo que as estruturas de dados compartilhados nesta parte, não obriguem a licença do seu plug - in ou pacote para tempo-de-design estar sob a GPL. Você é livre para escolher um plug - in de qualquer licença; não queremos limitar a sua escolha. Portanto plug-ins não-GPL compatíveis são permitidas. Note que não é permitida a distribuição de uma versão pré-compilada do Lazarus com estes plug-ins não-GPL compatível incluído estaticamente; no entanto, não vemos isso como uma grave limitação, visto que recompilar o Lazarus é fácil.
488528
489529## Colaboradores e Comentários
490530
491531Está página foi convertida do epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq).
492532
493533---
494534*From the Free Pascal wiki, page "Lazarus Faq/pt", as it stood on 2015-06-06 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
495535Category: FAQs/pt
496536Category: Lazarus/pt
497537Category: Português

Back to history