Sign in Join
Wiki copytemporary

Lazarus Faq/pt: what changed

Revision 1 to 2. 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
39-<figure>
40-<img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" />
41-<figcaption>Lazarus_vs_cpp.png</figcaption>
42-</figure>
39+![](/wiki-images/d/de/Lazarus_vs_cpp.png)
4340
4441### Porque a vinculação é lenta no Windows?
4542
4643Falando 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).
4744
4845També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]]
4946
5047Um 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.
5148
5249### Eu preciso de pc386.cfg ou fpc.cfg?
5350
5451Você precisa somente de fpc.cfg. Nesse caminho o compilador sabe onde procurar as bibliotecas.
5552
5653### Como eu compilo o Lazarus?
5754
5855Faça algo como:
5956
6057`$ cd lazarus`\
6158`$ make`
6259
6360### Como eu crio outros projetos baseados na LCL
6461
6562Se 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*
6663
6764`  # caminho de busca para outros toolkits (Linux)`\
6865`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{SeuToolKit}`
6966
7067`  # caminho de busca para outros toolkits (Windows)`\
7168` -Fu/{SeusDiretorioLazarus}/components/units/{SeuToolKit}`
7269
7370
7471Onde {SeuToolKit} pode ser *gtk2*, *gnome*, *qt* ou *win32* e execute:
7572
7673
7774ppc386 seu.projeto.pp
7875
7976**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]].
8077
8178### Qual versão do FPC é requerida?
8279
83802.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.
8481
8582### Eu não consigo compilar Lazarus
8683
87841. Verifique se o seu compilador tem a versão correta.
88852. Verifique se as bibliotecas fpc são de versão idêntica.
89863. Verifique se você tem um fpc.cfg e não um antigo ppc386.cfg
90874. Verifique também o "FAQs dependentes de SO"
9188
9289### Quando eu tento compilar um projeto, eu tenho um erro
9390
9491#### "Cannot find Unit interfaces". Como resolver isso?
9592
9693Esta unit compilada pode ser encontrada em {LazarusDir}\lcl\units\\{TargetCPU}\\{TargetOS}\\{LCLWidgetSet}\interfaces.ppu.
9794
9895Se você selecionar um widgetset diferente do que o que você utilizou para criar lazarus, você precisa criar a LCL para este widgetset.
9996
10097Se 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:
10198
10299- Recriar a LCL (ou o Lazarus completamente) com o compilador selecionado no Environmnent Options. Você pode isso
103100
104101com Tools -\> Build Lazarus. Antes de fazer isso, verifique as configurações atuais em Tools -\> Configure Build Lazarus.
105102
106103- Mude o compilador em Environment Options para o utilizado por você para compilar Lazarus.
107104
108105Veja 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.
109106
110107### Quando eu tento compilar projetos Delphi em Lazarus, eu tenho erro
111108
112109#### na linha :{\$R *.DFM} Como eu posso resolver este problema ?
113110
114111Lazarus (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:
115112
116113- 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.
117114- Criar um arquivo lazres (em lazarus/tools) lazres seuform.lrs seuform.lfm
118115- Adicionar a seguinte seçao de inicialização
119116
120117`     initialization`\
121118`     {$I yourform.lrs}`
122119
123120Por favor tenha em mente que nem todas as propriedades do dfm são suportadas ainda por lazarus, deste modo seu poder pode "dar pau".
124121
125122#### 'Identifier not found LazarusResources'.
126123
127124Quando 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.
128125
129126### 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
130127
131128Certifique, em Project -\> Project Inspector, que o seu projeto depende no pacote 'LCL' e que você tem instalado o fontes do FPC.
132129
133130Lazarus é 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.
134131
135132O caminho do fonte FPC pode ser ajustado via: Environment -\> General Options -\> Files -\> FPC source path
136133
137134### Como adicionar um pequeno arquivo no executável, sem necessitar de um arquivo separado. Como adicionar um ressource?
138135
139136Por exemplo:
140137
141138`/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
142139
143140criará um soundlrs do sound1.wav e sound2.wav.
144141
145142Então inclua *antes* do arquivo de formulário lrs:
146143
147144`...`\
148145`initialization`\
149146`{$i unit1.lrs} // este é o arquivo de recurso principal (primeiro)`\
150147`{$i sound.lrs} // arquivo de recurso definido pelo usuário`\
151-\
148+
152149`end.`
153150
154151Em seu programa você pode usar então:
155152
156153`Sound1AsString:=LazarusResources.Find('sound1').Value;`
157154
158155### Qual o significado das várias extensões de arquivos usadas pelo Lazarus?
159156
160157O 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:
161158
162159`*.lpi`
163160Arquivo de Informação de Projeto Lazarus (armazenado em XML; Contém configurações especificas do projeto)
164161
165162`*.lpr`
166163Arquivo de Projeto do Lazarus; contém o fonte Pascal do programa principal
167164
168165`*.lfm`
169166Arquivo 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)
170167
171168`*.pas` ou `*.pp`
172169Unit com o Código Pascal (normalmente para um formulário, armazenado em um arquivo `*.lfm` correspondente)
173170
174171`*.lrs`
175172Arquivo de Recurso do lazarus (este é um arquivo gerado; não confunda com um arquivo de recurso do Windows).
176173
177174Este arquivo pode ser criado com a ferramenta lazres (no diretório Lazarus/Tools) usando a linha de comando: lazres myfile.lrs myfilres.lfm
178175
179176`*.ppu`
180177Unit Compilada
181178
182179`*.lpk`
183180Arquivo de Informação de Pacote Lazarus. (armazenado em XML; contém as configurações do pacote especificado)
184181
185182### Como posso ver o resultado ou saida da depuração?
186183
187184A LCL tem na procedure LCLProc o envio de saida de debug:
188185
189186- **DebugLn:** funciona como writeLn, mas só aceita strings.
190187- **DbgOut:** funciona como o Write, mas só aceita strings.
191188
192189Em 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.
193190
194191O 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\>.
195192
196193Se 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:
197194
198195`set lazarus_debuglog=c:\lazarus\debug.txt`
199196
200197saída do debug será escrita em c:\lazarus\debug.txt.
201198
202199Como isto está implementado em lclproc, toda aplicação usando lclproc, podera usar esta facilidade de saida de log.
203200
204201Debuging Lazarus
205202Mais aproveitável para windows:
206203
207204Se você precisa de resultado em um console, adicione {\$APPTYPE console} em lazarus.pp ; Então recrie o Lazarus.
208205
209206### Eu arrumei/implementei algo no lazarus. Como eu posso adicionar minhas mudanças para o fonte original do lazarus?
210207
211208Crie um patch e envie para os desenvolvedores. Para detalhes veja [[Creating A Patch/pt]].
212209
213210## Onde esta ... definido
214211
215212### Constantes de Teclas Virtuais
216213
217-Constantes de Teclas Virtuais são definidas em LCLType. Adicione LCLtype em sua <b>uses</b>.
214+Constantes de Teclas Virtuais são definidas em LCLType. Adicione LCLtype em sua uses.
218215
219216## Usando a IDE
220217
221218### Como eu posso usar "Completador de identificador"?
222219
223220Você 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
224221
225222## Linux
226223
227224### Como eu posso depurar no Linux sem a IDE?
228225
229226Primeiro 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:
230227
231228` $ make clean; make OPT=-dDEBUG`\
232229` $ ddd lazarus`
233230
234231É 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.
235232
236233### Eu posso depurar agora, mas ddd não procura meus fontes ou reivindicações que eles contém no código. O que fazer?
237234
238235Este é um problema de caminho associado com qualquer gdb ou ddd. Você pode evitar por isso
239236
240237- 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.
241238- Em ddd vá \[Edit\] \[gdb-settings\] e determine o search-path
242239- Crie um arquivo \$(HOME)/.gdbinit como:
243240
244241`     directory /your/path/to/lazarus`\
245242`     directory /your/path/to/lazarus/lcl`\
246243`     directory /your/path/to/lazarus/lcl/include`
247244
248245### Eu recebo um erro durante a vinculação que states /usr/bin/ld can\\'t find -l
249246
250247**Distribuições Baseadas em Pacotes**
251248Você 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).
252249
253250**Distribuições e Manuais de Compilação Baseados em Fonte (LFS)**
254251Assegure-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).
255252
256253**FreeBSD**
257254Como 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)
258255
259256**NetBSD**
260257Como distros baseadas em fonte,
261258
262259também assegure-se que você tem -Fl/usr/pkg/lib no seu fpc.cfg e/ou caminho de biblioteca do Lazarus.
263260
264261### Como eu converto um projeto Kylix 2 em um Projeto Lazarus?
265262
266263Aproximadamente o mesmo caminho como convertendo um projeto Kylix em um projeto Delphi/VCL.
267264
268265A LCL (Biblioteca de Componentes Lazarus) prova compatibilidade com VCL. Kylix CLX prova compatibilidade com QT. Aqui estão umas dicas gerais:
269266
270267- renomeie todas as CLX Q-units usadas como QForms, QControls, QGraphics, ... em contra-parte em sua VCL: Forms, Controls, Graphics, ...
271268- Adicione LResources na seção uses de todos dos fontes de todos os formulários
272269- renomeie ou copie todos .xfm arquivos como arquivos .lfm.
273270- renomeie ou copie arquivo .dpr para arquivo .lpr.
274271- remova a diretiva {\$R *.xfm}
275272- remova a diretiva {\$R *.xfm}
276273- adicione a diretiva {\$mode objfpc}{\$H+} ou {\$mode delphi}{\$H+} para arquivos .pas e .lpr
277274- adicione uma seção initialization em cada fonte de formulário e adicione uma diretiva include para o arquivo .lrs (arquivo de recurso lazarus):
278275
279276` initialization`\
280277`   {$I unit1.lrs}`
281278
282279
283280Os arquivos .lrs podem ser criados via a ferramenta lazres em: (lazarusdir)/tools/lazres.
284281
285282Por exemplo: ./lazres unit1.lrs unit1.lfm
286283
287284- 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.
288285
289286### Quando compilo Lazarus o compilador não encontra uma unit. e.g.: gtkint.pp(17,16) Fatal: Can\\'t find unit GLIB
290287
2912881\. Verifique uma limpeza de reconstrução: execute um 'make clean all'
292289
2932902\. Verifique se o compilador tem a versão correta (1.0.10 ou 1.1)
294291
2952923\. 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.
296293
297294
298295**Dica:** Você pode ver qual arquivo de configuração é usado com 'ppc386 -vt bogus''
299296
3002974\. 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:
301298
302299`   -Fu/usr/lib/fpc/$version/units/$target`\
303300`   -Fu/usr/lib/fpc/$version/units/$target/*`\
304301`   -Fu/usr/lib/fpc/$version/units/$target/rtl`
305302
306303
307304A primeira parte destes caminhos (/usr/lib/fpc) depende do seu sistema. Em alguns sistemas essa pode ser por exemplo /usr/local/lib/fpc/... .
308305
309306**Dica:** Você pode ver os seus searchpaths com 'ppc386 -vt bogus'
310307
3113085\. Verifique que o arquivo de configuração (/etc/fpc.cfg) não contém os search paths para os arquivos fontes lcl (.pp, .pas):
312309
313310` forbidden: -Fu(lazarus_source_directory)/lcl`\
314311` forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
315312
316313
317314Se 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:
318315
319316` -Fu(lazarus_source_directory)/lcl/units`\
320317` -Fu(lazarus_source_directory)/lcl/units/gtk`
321318
3223196\. 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.
323320
3243217\. 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.
325322
326323### Eu tenho instalada a versão binária, mas quando compilo um simples projeto Lazarus dá: Fatal: Can\\'t find unit CONTROLS
327324
328325Provavelmente 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:
329326
330327` $ bash`\
331328` $ export CVSROOT=:pserver:cvs@cvs.freepascal.org:/FPC/CVS`\
332329` $ cvs login`\
333330` Dica: A senha é `***`cvs`***` (minúscula).`\
334331` $ cvs -z3 checkout lazarus`\
335332` $ cd lazarus`\
336333` $ make`
337334
338335Certifique-se que lazarus cria um novo diretório fonte: Environment-\>General Options-\>Files-\>Lazarus Directory Top
339336
340337### Lazarus compila, mas ao vincular falha com: libgdk-pixbuf not found
341338
342339Instale a biblioteca gdk-pixbuf para gtk1.x ou então desative o uso:
343340
344341Procure a biblioteca gdk-pixbuf em:
345342
346343RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
347344
348345Pacotes Debian: libgdk-pixbuf-dev
349346
350347Fontes: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
351348
352349Para 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".
353350
354351### Eu tenho SuSE e eu recebo /usr/bin/ld: cannot find -lgtk Error: Error while linking
355352
356353Suse 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.
357354
358355`(-Fl/opt/gnome/lib).`
359356
360357### Lazarus quebra com erro de runtime 211 após eu instalar um componente
361358
362359Após eu ter instalado um componente, Lazarus quebra com a seguinte mensagem:
363360
364361`Threading has been used before cthreads was initialized.`\
365362`Make cthreads one of the first units in your uses clause.`\
366363`Runtime error 211 at $0066E188`
367364
368365Como eu posso arrumar isso?
369366
370367Seu 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:
371368
3723691\) Modifique o fonte da ide/lazarus.pp: adicione a unit cthreads para a clausula uses, assim ele fica parecida com:
373370
374371`uses`\
375372`  //cmem,`\
376373`  cthreads, `\
377374`  {$IFDEF IDE_MEM_CHECK}`\
378375`...`
379376
380377e recrie lazarus.
381378
3823792\) 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.
383380
384381*Dica:* Talvez seu antigo (não-quebrado) executável lazarus é armazenado em lazarus.old no mesmo diretório que o executável quebrado.
385382
386383### Quando eu executo um program com threads eu recebeo um erro de runtime 232
387384
388385A mensagem de erro completa é:
389386
390387`This binary has no thread support compiled in.`\
391388`Recompile the application with a thread-driver in the program uses`\
392389`clause before other units using thread.`\
393390`Runtime error 232`
394391
395392**Solução**: Adicione cthreads como primeira unit para a sua clausula uses do seu programa principal, normalmente o arquivo .lpr.
396393
397394### Eu tenho Ubuntu Breezy e meus fontes em Lazarus IDE parecem muito grande
398395
399396Se 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:
400397
401398 style "default-text" {
402399 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
403400 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
404401 }
405402
406403 class "GtkWidget" style "default-text"
407404
408405### Como eu posso compilar um programa para Gtk2?
409406
410407Até o momento, a ide compilada em Gtk2 é um pouco instável, mas você pode compilar programas para Gtk2 usando a IDE Gtk1.
411408
412409Para 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.
413410
414411Agora click em Ok e vá até o menu "Tools"-\>"Build Lazarus"
415412
416413Agora você pode compilar seu programa com Gtk2 indo em Opções de Compilação e mudando o widgetset para Gtk2.
417414
418415## Windows
419416
420417### 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.
421418
422419No 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.
423420
424421### Quando eu repito a compilação, eu recebo: make\[3\]: ./ppc1.exe: Command not found
425422
426423Eu 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
427424
428425### Quando eu tento criar(make) Lazarus eu recebo:
429426
430427#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
431428
432429Você precisa atualizar o seu make..
433430
434431#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
435432
436433Verifique se você não instalou o FPC em um caminho com espaços no nome. O Makefile não suporta isso.
437434
438435### Como eu posso dar a meu programa um aspecto XP como lazarus tem?
439436
440437Se você tem um myprogram.exe então crie um arquivo chamado myprogram.exe.manifest e copie-cole para o arquivo isto:
441438
442439`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`\
443440`<assembly xmlns="`[`urn:schemas-microsoft-com:asm.v1`](urn:schemas-microsoft-com:asm.v1)`" manifestVersion="1.0">`\
444441`<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>`\
445442`<description>programom</description>`\
446443`<dependency>`\
447444`  <dependentAssembly>`\
448445`   <assemblyIdentity`\
449446`     type="win32"`\
450447`     name="Microsoft.Windows.Common-Controls"`\
451448`     version="6.0.0.0"`\
452449`     publicKeyToken="6595b64144ccf1df"`\
453450`     language="*"`\
454451`     processorArchitecture="*" />`\
455452`  </dependentAssembly>`\
456453`  </dependency>`\
457454`</assembly>`
458455
459456Voila! XP looks.
460457
461458### Quando eu executo um programa Windows criado em Lazarus ele inicia uma janela DOS
462459
463460Especifique 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.
464461
465462## Mac OS X
466463
467464### Por que ao compilar um projeto falha com 'unknown section attribute: no_dead_strip'?
468465
469466Inativo 'code stripping' não é suportado pelo assembler e pelo linker antes do Mac OS X 10.4.0. Desativa as opções de compilador
470467
471468- Code \> Unit style \> Smart linkable (-CX)
472469- and Linking \> Link Style \> Link smart (-XX)
473470
474471## Licenciando
475472
476473### Eu posso criar aplicações comerciais com o Lazarus ?
477474
478475Sim, 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.
479476
480477### Por que alguns componentes tem seu uso restringido em aplicações comerciais ?
481478
482479Lazarus 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".
483480
484481### Como eu sei se um Componente é parte da LCL ?
485482
486483TODAS 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.
487484
488485### Eu posso criar plug-ins comerciais com o Lazarus ?
489486
490487Sim, 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.
491488
492489## Colaboradores e Comentários
493490
494491Está página foi convertida do epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq).
495492
496493---
497494*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).*
498495Category: FAQs/pt
499496Category: Lazarus/pt
500497Category: Português

Back to history