Sign in Join
Wiki copytemporary

Lazarus Faq/sk: what changed

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

OldNewLine
11Tento FAQ bol zkopírovaný z FAQ na adrese www.freepascal.org, je jednoduchšie sa oň starať a rozširovať ho, keď je vo wiki formáte.
22
33## Všeobecné otázky
44
55### Kde môžem nájsť viacero FAQ?
66
77Pozrite sa na [oficiálnu stránku](http://www.lazarus.freepascal.org). Nájdete tam ďalší FAQ.
88
99### Prečo sú generované binárky také veľké?
1010
1111Binárky sú veľké pretože obsahujú množstvo ladiacich informácií potrebných pre gdb (GNu Debugger).
1212
1313Prekladač má prepínač na vypnutie lediacich informácií v binárnom súbore (-Xs), ale vďaka chybe v prekladači (verzia 2.0.2 a skoršie), tento nefunguje správne. Chyba bola opravená vo vývojovej verzii prekladača.
1414
1515Na odstránenie ladiacich symbolov zo spustiteľného súboru môžete použiť program zvaný "strip", nájdete ho v inštalačnom adresári Lazaraus lazarus\pp\bin\i386-win32\\.
1616
1717Jednoducho v príkazovom riadku napíšte príkaz "strip --strip-all \<váš exe súbor\>".
1818
1919Ak chcete mať svoj program ešte menší, môžete vyskúšať použiť program [UPX](http://upx.sourceforge.net/). UPX je veľmi dobrý kompresor pre vykonateľné súbory. Vďaka tomu, že binárku komprimuje priamo ("na mieste"), nemá žiadne problémy s prílišným vyťažením pamäte. Okrem toho má veľmi rýchlo dekompresiu (~10 MB/s na Pentiu 133).
2020
2121UPX spustíte zadaním "upx \<váš exe súbor\>" v príkazovom riadku.
2222
2323Po použití programu strip aj upx sa jednoduchá GUI aplikácia v Lazare zmenší na:
2424
2525- ~ 700kb na Linuxe
2626- ~ 420kb na Windows
2727
2828Detailnejšiu odpoveď na túto otázku môžete [[fpc:Size Matters|nájsť tu]].
2929
3030![](/wiki-images/d/de/Lazarus_vs_cpp.png)
3131
3232Je dôležté si uvedomiť, že už program hello world v Lazarus zahŕňa veľké množstvo vlastností:
3333
3434- Knižnicu obsluhy XML
3535- Knižnicu oblsuhy obrázkov pre súbory png, xpm, bmp a ico
3636- Skoro všetky nástroje z Lazarus Component Library
3737- Celú Free Pascal Runtime Library
3838
3939Takže je veľmi veľký, ale už obsahuje skoro všetko, čo skutočná netriviálna aplikácia bude potrebovať.
4040
4141Veľkosť spustiteľných súborov z Lazarus ja na začiatku veľká, ale narastá veľmi pomaly, vďaka spôsobu akým prekladač Free Pascal a fomruláre Lazarus pracuje. Projekt C++ (len príklad, ale aplikovateľný aj na iné jazyky/nástroje) má hello world veľmi malý, ale rýchlo exponencionálne narastá, keď potrebujete vlastnosti pre napísanie netriviálnch aplikácií.
4242
4343=== Prečo je linkovanie vo Windows také pomalé? ===
4444
4545Všeobecne povedané, preklad vo Windows zaberie viac času ako na iných platformých, pretože GNU Linker používaný Free Pascalom pracuje na tejto platforme pomaly. Tento problém ovplyvňuje len Windows a len na relatívne starých počítačoch (menej ako 1Ghz) a počítačoch s malou (128MB a menej).
4646
4747Rovnako, ak smartlinkujete LCL, bude linkovanie ešte pomalšie. Štúdiu o týchto problémoch môžete nájsť tu: [[File size and smartlinking]]
4848
4949Tento problém sa týka iba Windows, a iba na relatívne starších počítačoch (menej ako 1Ghz) a a počítačoch s málo RAM RAM (128MB alebo menej).
5050
5151Bol vyvinutý interný linker a je pripravený, ale bude dostupný len po uvoľnení Free Pascal 2.(samozrejme je dostupný cez subversion). Dramaticky skracuje linkovanie.
5252
5353
5454**Poznámka**: V 2.1.1 Windows používa interný pre win32/64/ce, ktorý proces trochu zrýchľuje. Rekompilácia Lazarus potom zaberie okolo 280MB.
5555
5656### Potrebujem ppc386.cfg alebo fpc.cfg?
5757
5858Potrebujete iba fpc.cfg. Toto je ten správny spôsob, ako prekladaču oznámiť, kde má hľadať knižnice.
5959
6060### Ako skompilujem lazarus?
6161
6262Urobte niečo ako toto:
6363
64-`$ cd lazarus`\
65-`$ make clean all`
64+```text
65+$ cd lazarus
66+$ make clean all
67+```
6668
6769### Ako vytvorím iné projekty založené na LCL?
6870
6971Pokiaľ nemôžete použiť IDE pre zostavenie vašej aplikácie, pridajte na koniec súboru fpc.cfg nasledujúce riadky:
7072
71731. Pridá knižnice
7274
73-` -Fu/your.lazarus.root/lcl/units`\
74-` -Fu/your.lazarus.root/lcl/units/{váš_toolkit}`\
75-` -Fu/your.lazarus.root/components/units`\
76-` -Fu/your.lazarus.root/components/units/{váš_toolkit}`
75+```text
76+ -Fu/your.lazarus.root/lcl/units
77+ -Fu/your.lazarus.root/lcl/units/{váš_toolkit}
78+ -Fu/your.lazarus.root/components/units
79+ -Fu/your.lazarus.root/components/units/{váš_toolkit}
80+```
7781
7882
7983Kde {váš_toolkit} môže byť GTK, Gnome alebo Win32 a potom spustite:
8084
8185
8286ppc386 vasprojekt.pp
8387
8488### Akú verziu FPC potrebujem?
8589
8690Používajte verzi 2.2.2 pre všetky operačné systémy.
8791
8892### Nemôžem skompilovať Lazarus
8993
90941. Overte si, či máte prekladač správnej verzie
91952. Overte si, či sú (fpc) knižnice taktiež z tej istej verzie.
92963. Overte si, či máte fpc.cfg a nie starý ppc386.cfg
93974. Taktiež si pozrite FAQ vzťahujúce sa k vášmu OS
9498
9599### Keď sa pokúšam kompilovať projekt, dostanem chybovú hlášku
96100
97101#### "Cannot find Unit interfaces". Ako to vyriešiť?
98102
99103Tento skompilovaný unit by sa mal nachádzať v {LazarusDir}/lcl/units/{TargetCPU}-{TargetOS}/{LCLWidgetSet}/interfaces.ppu.
100104
101105Uistite sa, že je iba jeden. Ak máte niekoľko verzií interfaces.ppu, tak pravdepodobne máte chybu v konfigurácii (napríklad ste pridali lcl adresár do vašej cesty). Zmažte všetky interfaces.ppu okrem toho vo vyššie definovanom adresári.
102106
103107Ak používate iný widgetset, než ten, pre aký ste skompilovali Lazarus, musíte taktiež pre tento widgetset skompilovať aj LCL.
104108
105109Ak ste sa dostali sem, ale stále sa zjavuje chybová hláška, tak používate iný prekladač / rtl pre kompilovanie vášho projektu ako ten, ktorý bol použitý pre skompilovanie Lazarus IDE. Môžete urobiť nasledovné:
106110
107111- urobiť rebuild LCL (alebo Lazara kompletne) s prekladačom, ktorý zvolíte v Environmnent Options. Urobíte to v menu Tools -\> Build Lazarus. Avšak predtým si prezrite a prípadne upravte nastavenia pre build v Tools -\> Configure Build Lazarus.
108112- Zmeňte prekladač v Environment Options na ten, ktorý ste použili pre skompilovanie Lazara. Pozorne si prezrite taktiež Environment Options a presvedčte sa, že máte nastavenú správnu cestu pre Lazarus Directory (inštalačný adresár Lazarus) a FPC sources directory (zdrojové adresáre pre fpc unity). Overte si, že v konfiguračnom súbore fpc.cfg máte iba jednu verziu prekladača - na Linuxe a iných unixových systémoch by sa tento súbor mal nachádzať v adresári /etc a na Windows v rovnakom adresári ako fpc prekladač. Kópie starých verzií súboru taktiež ostávajú v systéme, keď updatujete váš prekladač na novšiu verziu a môžu spôsobovať problémy, môžu sa nachádzať vo vašom domovskom adresári, alebo v tom istom adresári, v ktorom ste budovali váš nový prekladač. ZMAŽTE ICH!!
109113- Môžete tiež skúsiť zmeniť widgeset pre aktuálny projekt. Napr. ukážkový project "objectinspector", ktorý je súčasťou inštalácie Lazara je nastavený na gtk. Kompilovanie tohoto projektu určite skončí v chybe "Can't find unit interfaces" na platforme Windows. Zmenou widgesetu na default(Win32) v Project \| Compiler Options ... \| LCL Widget Type (various) môže odstrániť tento problém.
110114
111115### Keď sa pokúšam skompilovať Delphi projekt v Lazare, dostanem chybovú hlášku
112116
113117#### at the line :{\$R *.DFM} Ako vyriešim tento problém?
114118
115119Lazarus (alebo lepšie Linux) nepozná resourcy, takže ich nemôžete používať takým spôsobom ako robí Delphi/win32. Lazarus však používa tomuto vcelku kompatibilnú metódu. Pokiaľ sa budete riadiť nasledovným, tak stále môžete používať vaše Delphi layouty (.dfm súbory):
116120
117121- Potrebujete textovú verziu .dfm súboru. Delphi5 a vyššie to majú predvolené. Ak máte staršie súbory:: skratkou ALT-F12 si prezriete layout ako text a potom cut&paste. Keď už máte textový .dfm file, proste ho skopírujte do .lfm súboru.
118122- S pomocou lazres (v lazarus/tools) vytvorte súbor.
119123
120-` lazres vas_formular.lrs vas_formular.lfm`
124+```text
125+ lazres vas_formular.lrs vas_formular.lfm
126+```
121127
122128- Pridajte nasledovnú inicializačnú sekciu
123129
124-`     initialization`\
125-`     {$I yourform.lrs}`
130+```text
131+ initialization
132+ {$I yourform.lrs}
133+```
126134
127135Prosím, pamätajte na to, že nie všetky vlastnosti v dfm sú podporované Lazarom, takže vám IDE môže spadnúť.
128136
129137#### 'Identifier not found LazarusResources'.
130138
131139Pri vytváraní formulára Lazarus automaticky pridáva niekoľko extra unitov do uses sekcie vášho formulárového unitu. Počas konverzie z delphi unitu do lazarovho unitu sa toto nedeje. Čiže LResources potrebujete do uses sekcie vášho formulárového unitu pridať ručne.
132140
133141### Pri prístupe k udalostiam objektov objektov, napríklad udalosti onclick pre tlačidlo, dostanem nasledujúcu chybu: ERROR unit not found: stdCtrls
134142
135143Uistite sa (v Project -\> Project Inspector), že váš projekt závisí na balíčkoch LCL a že ste nainštalovali zdrojové súbory FPC.
136144
137145Lazarus pozostáva z IDE a z knižnice vizuálnych komponentov LCL. Všetko ostatné, ako IO, databázy, FCL a RTL sú poskytované FPC. IDE potrebuje poznať cesty ku všetkým týmto zdrojom.
138146
139147Cestu k FPC zdrojom môžete nastaviť cez: Tools -\> Options -\> Files -\> FPC source path
140148
141149### Ako vložím malý súbor do spustitelného súboru? Ako vložím resource?
142150
143-`/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
151+```text
152+/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...
153+```
144154
145155vytvorí súbor sound.lrs zo súborov sound1.wav a sound2.wav.
146156
147157Potom ho môžete includnuť *za* lrs súborom formulára:
148158
149-`...`\
150-`initialization`\
151-`{$i unit1.lrs} // hlavný resource súbor (vždy prvý !)`\
152-`{$i sound.lrs} // vlastný resource súbor`\
159+``` pascal
160+...
161+initialization
162+{$i unit1.lrs} // hlavný resource súbor (vždy prvý !)
163+{$i sound.lrs} // vlastný resource súbor
153164
154-`end.`
165+end.
166+```
155167
156168V programe potom môžete použiť napr.:
157169
158-`Sound1AsString:=LazarusResources.Find('sound1').Value;`
170+``` pascal
171+Sound1AsString:=LazarusResources.Find('sound1').Value;
172+```
159173
160174### Ako sa dostanem k debug výstupu?
161175
162176V unite LCLProc sa nachádzajú dve procedúry pre písane do debug výstupu:
163177
164178- **DebugLn:** funguje rovnako ako WriteLn, ale písať sa do nej dajú len textové reťazce (string).
165179- **DbgOut:** funguje rovnako ako Write, ale písať sa do nej dajú len textové reťazce (string).
166180
167181Za normálnych okolností sa debug výstup píše do stdout. Pokiaľ stdout nie je otvorený (typ aplikácie je {\$AppType Gui} alebo je skompilovaná pod Windows s prepínačom -WG), výstup sa nepíše vôbec.
168182
169183Debug výstup sa môže tiež zapisovať do súboru. Inicializačný kód v unite LCLProc skontroluje, či sa v príkazovom riadku nenachádza parameter '--debug-log=\<file\>'. Pokiaľ sa nachádza, všetok debug výstup sa píše do súboru \<file\>.
170184
171185Pokiaľ sa v príkazovom riadku nenájde parameter '--debug-log', LCLProc skontroluje systémovú premennú xxx_debuglog (xxx je názov programu bez prípony, čiže napr. pre Lazarus hľadá premennú lazarus_debuglog). Pokiaľ takáto systémová premenná existuje, debug výstup sa zapíše do nastaveného súboru. Napr. nastavením:
172186
173-`set lazarus_debuglog=c:\lazarus\debug.txt`
187+```text
188+set lazarus_debuglog=c:\lazarus\debug.txt
189+```
174190
175191sa bude debug výstup programu Lazarus zapisovať do súboru c:\lazarus\debug.txt.
176192
177193Keďže táto funkcionalita je implementovaná v unite LCLProc, je prístupná pre každú aplikáciu, ktorá túto unitu používa.
178194
179195Debugovanie Lazarusu
180196Najmä pre používateľov Windows: Pokiaľ chcete, aby Lazarus vypisoval do konzoly, pridajte {\$APPTYPE console} do súboru lazarus.pp a prekompilujte Lazarus.
181197
182198### Aký je význam prípon rôznych súborov, ktoré Lazarus používa?
183199
184200[[Lazarus Tutorial/sk|Lazarus Tutorial/sk#The Lazarus files]] uvádza niektoré príklady. Tu je stručný zoznam:
185201
186202`*.lpi`
187203Lazarus Project Information file - informácie o projekte (uložený v XML; obsahuje nastavania špecifické pre konkrétny projekt)
188204
189205`*.lpr`
190206Lazarus Program file; obsahuje pascalovský zdrojový kód hlavného programu
191207
192208`*.lfm`
193209Lazarus Form file; obsahuje vlastnosti všetkých objektov na formulári (uložený v Lazarovskom špeciálnom textovom formáte; akcie sú uložené v Pascale v príslušnom `.pas` súbore)
194210
195211`*.pas` or `*.pp`
196212Programová jednotka (Unit) v Pascale (obvykle zodpovedá nejakému formuláru uloženému v súbore `*.lfm`)
197213
198214`*.lrs`
199215Lazarus Resource file (toto je generovaný súbor, nemýľte si ho s resource súbormi Windows).
200216
201217Súbor sa dá vytvoriť pomocou pomôcky lazres (v adresári Lazarus/Tools) príkazom: lazres myfile.lrs myfile.lfm
202218
203219`*.ppu`
204220Compiled unit (skompilovaná unita)
205221
206222`*.lpk`
207223Lazarus package information file - informácie o balíčku (uložený v XML; obsahuje nastavenia špecifické pre konkrétny balíček)
208224
209225### Opravil som chybu/vylepšil som Lazarus. Ako dostanem moje zmeny do oficiálnych zdrojových kódov?
210226
211227Vytvorte záplatu a pošlite ju vývojarom. Viac detailov v [[Creating A Patch]].
212228
213229### Pokiaľ deklarujem textový súbor ako *var mytext: text;*, dostanem chybu "Unit1.pas(32,15) Error: Error in type definition". Ako to opraviť?
214230
215231Trieda TControl má vlastnosť [[doc:lcl/controls/tcontrol.text.html|Text]]. V metóde formulára sa teda nepoužije typ [[doc:rtl/system/text.html|Text]] zo systémovej unity. Môžete použiť typ [[doc:rtl/system/textfile.html|TextFile]], ktorý je len aliasom typu Text, alebo môžete pridať meno unitu do definície typu.
216232
217-`var`\
218-`  MyTextFile: TextFile;`\
219-`  MyText: System.Text;`
233+``` pascal
234+var
235+ MyTextFile: TextFile;
236+ MyText: System.Text;
237+```
220238
221239Rovnaký problém s duplicitnými menami nastáva pri priraďovaní (assign) a zatváraní (close) textových súborov. TForm má vlastnosť *assign* a metódu [[doc:lcl/forms/tcustomform.close.html|Close]]. Môžete použiť [[doc:rtl/objpas/assignfile.html|AssignFile]] a [[doc:rtl/objpas/closefile.html|CloseFile]] alebo pridať meno unity *System*.
222240
223241### Dostávam chybu pri tlačení pomocou Printer.BeginDoc
224242
225243Unita Printers musí byť pridaná v uses sekcii.
226244
227245Balíček Printer4Lazarus musí byť pridaný do závislostí projektu. Kliknite na: Project \| Project Inspektor \| Add \| New Requirement \| Package Name
228246
229247Pokiaľ balíček Printer4Lazarus nie je v zozname, musí sa doinštalovať. Balíček je súšasťou inštalácie Lazara a nájdete ho v adresári \[adresár kde je lazarus nainštalovaný\]\components\printers.
230248
231249Tento istý postup funguje aj v prípade chyby, ktorú môžete dostať pri použití Printer.Printers
232250
233251### Prečo je TForm.ClientWidth/ClientHeight rovnaká ako TForm.Width/Height?
234252
235253TForm.Width/Height neobsahujú okraj formulára (narozdiel od napr. Delphi), pretože je nemožné zístiť jeho veľkosť na všetkých platformách.
236254
237255V prípade, že sa nájde spolahlivý spôsob, ako zistiť velkosť okraju, toto bude v budúcnosti opravené.
238256
239257### Ako sa môžem stať vývojarom Lazara a získať prístup k menežmentu SVN a bug-trackeru?
240258
241259Tak po prvé: Najprv sa o Lazarovi musíte veľa naučiť a ukázať vaše vedomosti a zručnosti. Začnite čítanim [[Lazarus Documentation|wiki článkov]], prečítajte si zdrojový kód Lazara, opravte niekoľko chýb a keď si myslíte, že ste pripravení, kontaktujte vývojarov na [mailing liste](http://www.mail-archive.com/lazarus@miraclec.com).
242260
243261## Kde je definované ... ?
244262
245263### Virtual key constants
246264
247265Virtual key constants sú definované v LCLType. Pridajte LCLtype do uses sekcie.
248266
249267## Používame IDE
250268
251269### Ako sa používa doplňovanie identifikátorov?
252270
253271Doplňovanie identifikátorov vyvoláte stlačením kláves \[ctrl\]\[medzera\]. V menu *Environment \| Editor Options \| Code Tools \| Automatic Features* môžete nastaviť, ako dlho má trvať, kým sa doplňovanie identifikátorov objaví automaticky.
254272
255273## Linux
256274
257275### Ako môžem pod Linuxom debugovať bez použitia IDE?
258276
259277Po prvé, potrebujete debugger. gdb je štandardným debuggerom pod linuxom a existuje k nemu veľa grafických frontendov. Najobvyklejším je ddd, ktorý je aj súčasťou väčšiny distribúcii. Na skompilovanie Lazara a LCL s debug-information a jeho spustenie v debug móde použite nasledovné príkazy:
260278
261-` $ make clean; make OPT=-dDEBUG`\
262-` $ ddd lazarus`
279+```text
280+ $ make clean; make OPT=-dDEBUG
281+ $ ddd lazarus
282+```
263283
264284Avšak pozor, ddd nie je až také konfortné, ako debugger vstavaný do Lazara. Najmä v prípade, keď si chcete nechat zobraziť obsah premennej, nezabúdajte, že ddd/gdb je narozdiel od Pascalu case-sensitívne (rozlišuje veľké a malé písmená). Z tohoto dôvodu, názvy všetkých premenných je nutné zadávať veľkými písmenami. Viac informácií sa dočítate v manuáloch k FPC.
265285
266286### Už viem debugovať, ale ddd nevie nájsť moje zdrojáky alebo vypisuje, že neobsahujú žiaden kód. Prečo?
267287
268288Toto je problém spôsobený zle nastavenými cestami. Vyhnete sa mu nasledovným spôsobom
269289
270290- V ddd menu použite príkaz "Change directory" (Zmeň adresár) a nastavte adresár, kde sa nachádzajú vaše zdrojové kódy. Nevýhodou tohoto riešenia je, že teraz nemôžete debugovať zdrojové kódy programu, s ktorým ste štartovali (napr. lazarus). Preto je niekedy nevyhnutné meniť adresár viac krát.
271291- V ddd choďte do \[Edit\] \[gdb-settings\] a nastavte správne search-path (cesta vyhľadávania)
272292- Vytvorte súbor \$(HOME)/.gdbinit s obsahom:
273293
274-`     directory /your/path/to/lazarus`\
275-`     directory /your/path/to/lazarus/lcl`\
276-`     directory /your/path/to/lazarus/lcl/include`
294+```text
295+ directory /your/path/to/lazarus
296+ directory /your/path/to/lazarus/lcl
297+ directory /your/path/to/lazarus/lcl/include
298+```
277299
278300### Pri linkovaní dostávam chybu, že /usr/bin/ld nemôže nájsť -l\<knižnica\>
279301
280302**Distribúcie založené na balíčkoch**
281303Je nutné nainštalovať balíčky, ktoré obsahujú súbory lib\<knižnica\>.so alebo lib\<knižnica\>.a. Dynamické knižnice pod linuxom majú príponu .so, statické príponu .a. V niektorých linuxových distribúciách po nainštalovaní balíčku obsahujúcom knižnicu, je nutné tiež nainštalovať vývojársky balíček (obvykle má názov \<baliček\>-dev).
282304
283305Niektoré distribúcie majú príkazy, ktoré umožni nájsť balíček, ktorý obsahuje nejaký súbor:
284306
285307**Mandriva**
286308
287-`[]$ urpmf lib<knižnica>.so`
309+```text
310+[]$ urpmf lib<knižnica>.so
311+```
288312
289313
290314vypíše zoznam všetkých balíčkov obsahujúcich súbor lib\<knižnica\>.so, nainštalovať musíte ten končiaci na -devel
291315
292316
293317**Debian**
294318
295-`[]$ apt-file search lib<knižnica>.so`
319+```text
320+[]$ apt-file search lib<knižnica>.so
321+```
296322
297323
298324vypíše zoznam všetkých balíčkov obsahujúcich súbor lib\<knižnica\>.so, nainštalovať musíte ten končiaci na -dev
299325
300326**Distribúcie založené na zdrojových kódoch alebo manuálne kompilované**
301327Ubezpečte sa, že súbor lib\<knižnica\>.a sa nachádza na ceste (systémová premenná PATH), a že je správnej verzie. Aby linker našiel správnu dynamickú knižnicu, vytvorte symlink nazvaný lib\<knižnica\>.so, do lib\<knižnica\>\<verzia\>-x,y.so ak je to potrebné.
302328
303329**FreeBSD**
304330Rovnaký postup ako vyššie, a okrem toho skontrolujte, či máte -Fl/usr/local/lib v súbore fpc.cfg. Nezabúdajte, že balíčky pre GTK 1.2 sa vo FreeBSD nazývajú "gtk12".
305331
306-`[]# cd /usr/local/lib && ln -s libglib-12.so libglib12.so`\
307-`[]# cd /usr/X11R6/lib && ln -s libgtk-12.so libgtk12.so`\
308-`[]# cd /usr/X11R6/lib && ln -s libgdk-12.so libgdk12.so`
332+```text
333+[]# cd /usr/local/lib && ln -s libglib-12.so libglib12.so
334+[]# cd /usr/X11R6/lib && ln -s libgtk-12.so libgtk12.so
335+[]# cd /usr/X11R6/lib && ln -s libgdk-12.so libgdk12.so
336+```
309337
310338**NetBSD**
311339Rovnaký postup ako pri distribúciach založených na zdrojových kódoch, a okrem toho skontrolujte, či máte Fl/usr/local/lib v súbore fpc.cfg.
312340
313341### Ako skonvertujem projekt z Kylix 2 do Lazara?
314342
315343Prakicky veľmi podobne, ako pri konverzii z Kylixu do Delphi/VCL.
316344
317345LCL (Lazarus Component Library) sa snaží byť čo najviac kompatibilná s VCL (Visual Component Library) z Delphi. Kylix CLX sa snaží byť kompatibilný s knižnicami QT.
318346
319347Základné tipy:
320348
321349- Premenujte všetky použité CLX unity (napr. QForms, QControls, QGraphics, ...), do ich VCL podoby: Forms, Controls, Graphics, ...
322350- Pridajte LResources do každej uses sekcie zdrojáku každého formulára
323351- Premenujte alebo skopírujte všetky súbory .xfm na .lfm.
324352- Premenujte alebo skopírujte všetky súbory .dpr na .lpr.
325353- Pridajte "Interfaces" do uses sekcie .lpr súboru.
326354- Odstráňte direktívu {\$R *.res}
327355- Odstráňte direktívu {\$R *.xfm}
328356- Pridajte direktívu {\$mode objfpc}{\$H+} alebo {\$mode delphi}{\$H+} do všetkých .pas a .lpr súborov
329357- Pridajte inicializačnú sekciu na koniec každého zdroj. kódu formulára a pridajte include direktívu pre .lrs súbor:
330358
331-` initialization`\
332-`   {$I unit1.lrs}`
359+```text
360+ initialization
361+ {$I unit1.lrs}
362+```
333363
334364
335365.lrs súbor vytvoríte napríklad pomôckou lazres v adresári lazares/tools/lazres.
336366
337367Napr: ./lazres unit1.lrs unit1.lfm
338368
339369- Opravte rozdiely. LCL zatiaľ nepodporuje všetky vlastnosti VCL, a CLX nie je s VCL úplne kompatibilná.
340370- V záujme čo najväčšej platformovej nezávislosti, odstránte závislosti na unite libc a nahraďte ich FPC unitami ako baseunix/unix. Toto je nevyhnutné, pokiaľ chcete kompilovať pre iné platformy ako linux/x86.
341371
342372### When compiling lazarus the compiler can not find a unit. e.g.: gtkint.pp(17,16) Fatal: Can't find unit GLIB
343373
3443741\. Check a clean rebuild: do a 'make clean all'
345375
3463762\. Check if the compiler has the correct version (2.0.0 or higher)
347377
3483783\. Check if the compiler is using the right config file. The normal installation creates /etc/fpc.cfg. But fpc also searches for ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg and it uses only the first it finds.
349379
350380
351381**Hint:** You can see which config file is used with 'ppc386 -vt bogus'
352382
353383Remove any ppc386.cfg as it is really obsolete.
354384
3553854\. Check if the config file (/etc/fpc.cfg) contains the right paths to your fpc libs. There must be three lines like this:
356386
357-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget`\
358-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
359-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*`
387+```text
388+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
389+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
390+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
391+```
360392
361393
362394The first part of these paths (/usr/lib/fpc) depends on your system. On some systems this can be for example /usr/local/lib/fpc/... .
363395
364396**Hint:** You can see your searchpaths with 'ppc386 -vt bogus'
365397
3663985\. Check that the config file (/etc/fpc.cfg) does not contain search paths to the lcl source files (.pp, .pas):
367399
368-` forbidden: -Fu(lazarus_source_directory)/lcl`\
369-` forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
400+```text
401+ forbidden: -Fu(lazarus_source_directory)/lcl
402+ forbidden: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
403+```
370404
371405
372406If you want to add the lcl for all your fpc projects, make sure that the two paths look like the following and are placed after the above fpc lib paths:
373407
374-` -Fu(lazarus_source_directory)/lcl/units/$fpctarget`\
375-` -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk`
408+```text
409+ -Fu(lazarus_source_directory)/lcl/units/$fpctarget
410+ -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk
411+```
376412
3774136\. Check if the missing unit (glib.ppu) exists in your fpc lib directory. For example the gtk.ppu can be found in /usr/lib/fpc/\$version/units/i386-linux/gtk/. If it does not exists, the fpc lib is corrupt and should be reinstalled.
378414
3794157\. Check if the sources are in a NFS mounted directory. In some cases the NFS updates created files incorrectly. Please, try to move the sources into a non NFS directory and compile there.
380416
381417### I have installed the binary version, but when compiling a simple project, lazarus gives: Fatal: Can't find unit CONTROLS
382418
383419Probably you are using a newer fpc package, than that used for building the lazarus binaries. The best solution is to download the sources and compile lazarus manually. You can download the source snapshot or get the source via svn:
384420
385-` $ bash`\
386-` $ svn checkout `[`http://svn.freepascal.org/svn/lazarus/trunk`](http://svn.freepascal.org/svn/lazarus/trunk)` lazarus`\
387-` $ cd lazarus`\
388-` $ make clean all`
421+```text
422+ $ bash
423+ $ svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus
424+ $ cd lazarus
425+ $ make clean all
426+```
389427
390428Make sure that lazarus get the new source directory: Environment-\>General Options-\>Files-\>Lazarus Directory Top
391429
392430### Lazarus compiles, but linking fails with: libgdk-pixbuf not found
393431
394432Either install the gdk-pixbuf library for gtk1.x or disable the use:
395433
396434Where to find the gdk-pixbuf library:
397435
398436RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
399437
400438Debian packages: libgdk-pixbuf-dev
401439
402440Sources: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
403441
404442How to disable the use in lazarus: In Tools-\>Configure "Build Lazarus" add the option '-dNoGdkPixBufLib' or at command line: "make clean all OPT=-dNoGdkPixBufLib".
405443
406444### I have SuSE and I get /usr/bin/ld: cannot find -lgtk Error: Error while linking
407445
408446SuSE installs the gtk devel libs under /opt/gnome/lib (or /opt/gnome/lib64 for 64 bits), which is not in the standard lib path. Simply add it to your /etc/fpc.cfg. (-Fl/opt/gnome/lib).
409447
410448### Lazarus crashes with runtime error 211 after I installed a component
411449
412450After I installed a component, Lazarus crashes with the following message:
413451
414-`Threading has been used before cthreads was initialized.`\
415-`Make cthreads one of the first units in your uses clause.`\
416-`Runtime error 211 at $0066E188`
452+``` pascal
453+Threading has been used before cthreads was initialized.
454+Make cthreads one of the first units in your uses clause.
455+Runtime error 211 at $0066E188
456+```
417457
418458How can I fix this?
419459
420460Your freshly installed component is using threads. Fpc on *nix doesn't automatically include threading support, but it must be intialized. This initialization is done in the cthreads unit. Every application using the component needs to add this unit to the uses clause of the main program. Lazarus itself is no exception. This can be done in two ways:
421461
4224621\) Change the source of ide/lazarus.pp: add the cthreads as first unit to the uses clause, so that is looks like this:
423463
424-`uses`\
425-`  //cmem,`\
426-`  cthreads, `\
427-`  {$IFDEF IDE_MEM_CHECK}`\
428-`...`
464+``` pascal
465+uses
466+ //cmem,
467+ cthreads,
468+ {$IFDEF IDE_MEM_CHECK}
469+...
470+```
429471
430472and rebuild lazarus.
431473
4324742\) In order to avoid modifying lazarus.pp file, a fpc compiler option could be used. Once package that uses threads has been compiled, open menu Tools-\>Configure "build Lazarus". Configure "build Lazarus" dialog will be shown, in field "Options:" type -Facthreads and then press "OK" button. The next step is to install the package. Lazarus will be built with option -Facthreads which means that it will treat main program as if unit cthreads where first in uses clause.
433475
434476*Hint:* Maybe your old (non-crashing) lazarus executable is stored as lazarus.old in the same directory as the crashing lazarus executable.
435477
436478### When I run a program with threads I get runtime error 232
437479
438480The complete error message is:
439481
440-`This binary has no thread support compiled in.`\
441-`Recompile the application with a thread-driver in the program uses`\
442-`clause before other units using thread.`\
443-`Runtime error 232`
482+``` pascal
483+This binary has no thread support compiled in.
484+Recompile the application with a thread-driver in the program uses
485+clause before other units using thread.
486+Runtime error 232
487+```
444488
445489**Solution**: Add cthreads as first unit to the uses clause of your main program, usually the .lpr-file.
446490
447491### I have Ubuntu Breezy and my fonts in Lazarus IDE look too big
448492
449493If Lazarus is compiled with Gtk1.2, the settings in Gnome Preferences/Font don't have any effect as they are related to Gtk2. You could try this solution: Create a file named .gtkrc.mine in your home directory (if it's not already there) and add these lines to it:
450494
451495 style "default-text" {
452496 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
453497 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
454498 }
455499
456500 class "GtkWidget" style "default-text"
457501
458502### How can I compile a program for Gtk2?
459503
460504At the moment, the Gtk2 compiled IDE is a little unstable, but you can compile software for Gtk2 using the Gtk1 IDE.
461505
462506To start with recompile LCL for Gtk2. Go to the menu "Tools"-\>"Configure Build Lazarus" and set LCL to clean+build and everything else to none.
463507
464508Now click Ok and go to the menu "Tools"-\>"Build Lazarus"
465509
466510Now you can compile your software with Gtk2 going on the Compiler options and changing the widgetset to Gtk2.
467511
468512## Windows
469513
470514### When I cycle the compiler, I get:The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time.
471515
472516In the compiler dir exists an OS2 scriptfile named make.cmd. NT sees this also as a script file, so remove it since on NT we don't need it.
473517
474518### When I cycle the compiler, I get: make\[3\]: ./ppc1.exe: Command not found
475519
476520I don't know why but somehow make has lost its path. Try to cycle with a basedir set like: make cycle BASEDIR=your_fpc_source_dir_herecompiler
477521
478522### When I try to make Lazarus I get:
479523
480524#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
481525
482526You need to upgrade your make.
483527
484528#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
485529
486530Make sure you didn't install FPC in a path with spaces in the name. The Makefile doesn't support it.
487531
488532### Ako nastavím aplikáciu aby vyzerala ako XP ?
489533
490534Ak máme program myprogram.exe vytvoríme súbor nazvaný myprogram.exe.manifest a skopírujeme doň nasledujúci text:
491535
492-`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`\
493-`<assembly xmlns="`[`urn:schemas-microsoft-com:asm.v1`](urn:schemas-microsoft-com:asm.v1)`" manifestVersion="1.0">`\
494-`<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>`\
495-`<description>programom</description>`\
496-`<dependency>`\
497-`  <dependentAssembly>`\
498-`   <assemblyIdentity`\
499-`     type="win32"`\
500-`     name="Microsoft.Windows.Common-Controls"`\
501-`     version="6.0.0.0"`\
502-`     publicKeyToken="6595b64144ccf1df"`\
503-`     language="*"`\
504-`     processorArchitecture="*" />`\
505-`  </dependentAssembly>`\
506-`  </dependency>`\
507-`</assembly>`
536+``` pascal
537+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
538+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
539+<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>
540+<description>programom</description>
541+<dependency>
542+ <dependentAssembly>
543+ <assemblyIdentity
544+ type="win32"
545+ name="Microsoft.Windows.Common-Controls"
546+ version="6.0.0.0"
547+ publicKeyToken="6595b64144ccf1df"
548+ language="*"
549+ processorArchitecture="*" />
550+ </dependentAssembly>
551+ </dependency>
552+</assembly>
553+```
508554
509555Voila! a máme XP vzhľad.
510556
511557### Pokiaľ spustím Windows aplikáciu vytvorenú v Lazarovi, zobrazí sa v DOSovom okne
512558
513559Špecifikujte parameter -WG (Windows GUI) v príkazovom riadku compilera alebo v Lazarovi skontrolujte, či je zaškrtnuté políčko Windows GUI v Project menu \| Compiler Options \| Linking \| target OS Specific options.
514560
515561## Licencie
516562
517563### Možem v Lazarovi vytvárať komerčné aplikácie?
518564
519565Áno, LCL je chránená licenciou LGPL s výnimkou, ktorá vám imožňuje ju staticky linkovať bez nutnosti zverejnovať zdrojový kód vašej aplikácie. Zmeny a vylepšenia v LCL musia byť distribuované so zdrojovým kódom. Lazarus a Lazarus IDE sú chránené licenciou GPL.
520566
521567### Why are some components restricted from usage in commercial application ?
522568
523569Lazarus comes with additional components, that were developed by third parties. Those are under various other Licenses. If you wish to use them you need to see the License within the source files of those packages. Most of those 3rd party components are in the directory "components".
524570
525571### How do I know if a Component is part of the LCL ?
526572
527573All LCL units are in the directory "lcl". A List of units belonging to the LCL can be found here <http://lazarus-ccr.sourceforge.net/docs/lcl/> . If you code uses units not listed on this page, you may have used a component that is not part of the LCL.
528574
529575### Môžem vytvárať komerčné rozšírenia (plug-in) pre Lazarus?
530576
531577Áno, časť IDE s názvom IDEIntf je chránená licenciou LGPL s rovnakou výnimkou, čiže nie ste nútený licencovať váš plug-in alebo vývojársky balíček pod GPL. Môžete si tiež vyberať plug-iny pod akoukolvek licenciou, nie-GPL plug-iny sú teda povolené. Pozor ale, nie je dovolené distribuovať predkompilovaného Lazara staticky zlinkovaného s týmito nie-GPL plug-inmi.
532578
533579## Contributors and Comments
534580
535581This page has been converted from the epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq).
536582
537583---
538584*From the Free Pascal wiki, page "Lazarus Faq/sk", as it stood on 2015-11-10 after a change by Trsek, 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).*
539585Category: FAQs/sk
540586Category: Lazarus/sk
541587Category: Slovensky

Back to history