Difference between revisions of "Lazarus Faq/hu"

From Free Pascal wiki
Jump to navigationJump to search
m
m
Line 177: Line 177:
 
  $ make clean all
 
  $ make clean all
  
 +
 +
=== Hogyan fordíthatok más projekteket, amik az LCL-en az alapulnak? ===
 
<!--
 
<!--
=== How do I build other projects based upon the LCL ===
 
 
 
If you can't use the IDE to build your applications, use lazbuild. This is a command line version of the IDE to build lazarus projects and packages.
 
If you can't use the IDE to build your applications, use lazbuild. This is a command line version of the IDE to build lazarus projects and packages.
 
If you want to build LCL applications without the IDE and without the lazbuild, add the following lines to the end of your ''fpc.cfg''
 
If you want to build LCL applications without the IDE and without the lazbuild, add the following lines to the end of your ''fpc.cfg''

Revision as of 07:47, 15 July 2010

العربية (ar) Deutsch (de) English (en) español (es) français (fr) magyar (hu) italiano (it) 日本語 (ja) 한국어 (ko) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)


Lazarus GY.I.K.

folyamatban...



Általános

Miért olyan nagyok a létrehozott binárisok?

A binárisok azért nagyok, mert hibakeresési információkat is tartalmaznak, amelyekre a gdb (GNU Debugger) használatakor van szükség.

A fordítónak van egy kapcsolója amellyel el lehet távolítani a hibakeresési információkat a futtatható állományból (-Xs), de egy hiba miatt (a 2.0.2 és korábbi változatokban) ez nem működik megfelelően. A hiba már javítva van a fordító 2.0.4 és későbbi változataiban.

Használhatod a 'strip' nevű programot a hibakeresési szimbólumok eltávolításához a futtatható állományból. Ez a lazarus könyvtárában található (például: lazarus\fpc\bin\i386-win32\).

Csak írd a parancssorba: "strip --strip-all <a_futtatható_fájl_neve_útvonallal>".

Ha még kisebbre akarod a programod méretét, kipróbálhatod az UPX programot. Az UPX egy nagyon jó tömörítő kifejezetten futtatható állományok tömörítéséhez. It includes no memory overhead due to in-place decompression. Nagyon gyorsan tömöríti ki az állományokat (~10 MB/másodperc egy Pentium 133 gépen).

Az UPX hazsnálatához írd a parancssorba: "upx <a_futtatható_fájl_neve_útvonallal>".

Miután mindkét parancs (strip és upx) is lefutott, egy Lazarus-szal készített egyszerű GUI alkalmazás mérete kb. ennyi lesz:

  • ~ 700kb Linux-on
  • ~ 420kb Windows-on

Részletesebb választ az UPX használatának esetleges hátrányairól is, itt olvashatsz: Size Matters (angolul).

Fontos megjegyezni, hogy a lazarus 'hello world' példaprogram már eleve tartalmaz nagyon sok fontos összetevőt. Tartalmazza:

  • XML kezelő függvénytár
  • Képkezelő függvénytár png, xpm, bmp és ico fájlokhoz
  • Majdnem minden widget-et a LCL-ből (Lazarus Component Library)
  • Az teljes Free Pascal Runtime Library-t

Ezért nagyon nagy, de már majdnem mindent tartalmaz amire egy a valódi világnak készülő és komoly alkalmazásnak szüksége lehet.

A Lazarus által készített futtatható állományok nagy mérettel kezdődnek, de csak lassan nőnek, köszönhetően a Free Pascal fordítónak és a módnak ahogy a lazarus ablakok működik. Egy c++ projekt (csak példa, de más nyelvekre / eszközökre is igaz) kis mérettel kezdődneka 'hello world' esetében, de méretük gyorsan a sokszorosára nő amikor egy szükséged van összetevőkre egy komoly alkalmazás írásához.

Lazarus vs cpp hu.png


Gyors útmutató a Lazarus/FPC alkalmazások méretének csökkentéséhez (tesztelve a Lazarus 0.9.26 változatával)

  • 1. "Project|Project Options|Compiler Options|Code|Smart Linkable (-CX)" -> Bejelölve
  • 2. "Project|Project Options|Compiler Options|Linking|Debugging|" minden törölve kivéve a "Strip Symbols From Executable (-Xs)" -> Bejelölve
  • 3. "Project|Project Options|Compiler Options|Linking|Link Style|Link Smart (-XX)" -> Bejelölve

A legfontosabb elem a 2. Egy egyszerű alkalmazás esetén a futtatható állomány mérete 1-3 MB körül lesz 15-20 MB helyett. Ezen a ponton megpróbálhatod ezt: "Project|Project Options|Compiler Options|Code|Optimizations|smaller rather than faster" -> Bejelölve (Figyelem: ez csökkentheti a tejesítményt)

  • 4. (Esetleg) Futtasd az "UPX <te_futtatható_programod>" parancsot a bináris állomány tömörítéséhez a -2 vagy -3 paraméterrel (Figyelem: mint fentebb olvashattad, az UPX használatának lehetnek hátrányai).

Méretek változása egy üres alkalmazás esetén, beállítások és operációs rendszerek függvényében

A tesztekhez változatok: Lazarus 0.9.29 és FPC 2.4 (Windows-on FPC 2.2.4). Az Optimized compiler a fentebbi tanácsok alkalmazását jelenti UPX használata nélkül. A Default Lazarus pedig azt ahogy telepítve lett a csomagból/telepítővel. Az LCL without debug informations jelentése, hogy a Lazarus IDE és LCL hibakeresési információk nélküli (-g-) újraépítése után.

    Default Lazarus     LCL without debug informations
Ubuntu 64 bits / Lazarus 64 bits
Default application     13,4  Mb     7,5 Mb / 8
Optimized compiler     4,4 Mb     2,70 Mb (0.29svn FPC2.4 2,5)
   
Ubuntu 32 bits / Lazarus 32 bits
Default application     19,6  Mb     5,7 Mb
Optimized compiler     2,9 Mb     1,6 Mb
   
Windows XP 32 bits / Lazarus 32 bits
Default application     11,8 Mb     2,14 Mb
Optimized compiler     1,62 Mb     1,50 Mb
   
Windows Seven 64 bits / Lazarus 64 bits
Default application     12,3  Mb     3,20 Mb
Optimized compiler     2,14 Mb     2,16 Mb

Miért lassú az alkalmazások építése Windows-on?

Ez a hiba javítva lett az FPC 2.2 és a Lazarus 0.9.24 változataiban. Frissítsd a Lazarus-t. Régebbi változatokkal kapcsolatban olvasd el a következő szöveget.

Általánosságban elmondható, hogy a fordítási idő Windows-on több időt vesz igénybe, mint más rendszereken, mert a GNU Linker, amit a Free Pascal használ lassú ezen a rendszeren. Ez a jelenség csak a Windows-on áll fenn, és csak a régebbi gép (1Ghz alatt) valamint kevés memória (128MB vagy kevesebb) esetén zavaró.

Ezen kívül, ha az LCL-t a "smartlink" kapcsolóval használod akkor az összefűzés sokkal lassabb lesz. Egy leírás erről itt található: File size and smartlinking (angolul - kidolgozás alatt)

Egy belső összefűző (linker) lett kifejlesztve, de csak a Free Pascal 2.2 változatától kezdve lesz elérhető (természetesen az SVN-ből is elérhető). Látványosan lecsökkenti az összefűzés idejét.

Megjegyzés: A 2.1.1 változat Windows-on egy olyan belső összefűzőt használ amely már egy kicsit gyorsabb. Az ezzel újrafordított Lazarus kb. 280MB-ot foglal el.

Melyikre van szükségem: ppc386.cfg vagy fpc.cfg?

Csak az fpc.cfg kell neked. Így a fordító tudja hogy hol vannak a függvénytárak.

Hogyan fordítsam a lazarus-t?

Valahogy így:

$ cd lazarus
$ make clean all


Hogyan fordíthatok más projekteket, amik az LCL-en az alapulnak?

Melyik FPC változatra van szükség?

A Lazarus 0.9.28 legalább az FPC 2.4 változatát igényli.

Nem tudom fordítani a Lazarus-t

  1. Ellenőrizd, hogy a fordító megfelő változatát használod
  2. Ellenőrizd, hogy a függvénytárak (fpc) ugyanehhez a változathoz valók
  3. Ellenőrizd, hogy a fordító telepítési útvonalának nevében vannak-e szóközök. Ne legyenek!
  4. Ellenőrizd, hogy van-e fpc.cfg fájl és nincs régi ppc386.cfg
  5. Nézd át az operációs rendszerrel összefüggő GY.I.K.-t

Amikor egy projektet fordítok, hibaüzenetet kapok

"Cannot find Unit interfaces". Hogyan oldjam meg?

Amikor egy delphi projektet akarok fordítani Lazarus-szal, hibaüzenetet kapok

at the line :{$R *.DFM} Hogyan oldhatom meg ezt a problémát?

'Identifier not found LazarusResources'.

Amikor egy objektum eseménykezelőjét hívom, pl. egy gomb az onclick()-jét akkor a következő hibaüzenetet hapom: 'ERROR unit not found: stdCtrls'

Hogyan építhetek be egy kis fájlt a futtatható állományba, hogy ne legyen külön fájl? Hogyan építhetek be erőforrást (resource)?

Mit jelentenek a különböző fájltípusok amiket a Lazarus használ?

Amikor egy szövegfájlt deklarálok így: var mytext: text; , Hibaüzenetet kapok: "Unit1.pas(32,15) Error: Error in type definition". Hogyan javíthatom?

Hibaüzenetet kapok amikor a Printer.BeginDoc-ot használom

Miért egyenlő a TForm.ClientWidth/ClientHeight és a TForm.Width/Height

Hibakereső (Debugger)

Hogyan láthatom a hibakereső kimenetét?

Hogyan fiygelhetem a "property"-ket?

Miért nem mutatja a hibakereső az egyes Változókat/Struktúrákat ("no such symbol"/"incomplete type")

Hogyan használható a hibakereső, csomagokban található FCL komponenseken Lazarus-szal

Közreműködés / Javítás a Lazarus-ban

Készítettem egy foltot (patch) amivel az IDE Üzenetek (Messages) ablaka a Forráskód-Szerkesztő (Source Code Editor) aljához rögzíthető

Javítottam/fejlesztettem a Lazaruszon. Hogyan adhatom hozzá a változtatásokat a hivatalos Lazarus forráskódhoz?

Készíts egy foltot (patch) és küldd el a fejlesztőknek. Részletek itt találsz: Creating A Patch. (angolul)

Hogyan lehetek Lazarus fejlesztő, az SVN és a hibakövető (bug-tracker) kezelője?

Hol vannak a ... definiciók

Virtuális billentyű konstansok

Virtuális billentyű konstansok az LCLType unitban vannak definiálva. Add a uses részhez az LCLtype unitot.

Az IDE használata

Hogyan használhatom az "azonosító kiegészítés" ("identifier completion") lehetőséget?

Linux

A bináris változatot telepítettem, de egy egyszerű projekt forításakor a Lazarus ezt írja:: 'Fatal: Can't find unit CONTROLS'

A Lazarus lefordítható, de az összefűzés leáll ezzel: 'libgdk-pixbuf not found'

SuSE rendszeren ezt kapom: '/usr/bin/ld: cannot find -lgtk Error: Error while linking'

A Lazarus összeomlik 'runtime error 211' hibával, miután egy komponenst telepítettem

Amikor egy szálakkal (threads) dolgozó programot futtatok, hibaüzenetet kapok: 'runtime error 232'

Ubuntu Breezy/Mandriva KDE3 használatakor a betűk a Lazarus IDE-ben túl nagyok

Hogyan használhatnak a gtk programjaim különböző rc fájlokat?

Ubuntu-t hazsnálok és nem tudok Gtk2-re fordítani, hiányzó függvénytárak miatt

Hogyan fordíthatok egy programot Gtk2-re?

Ezt az üzenetet kapom: "[WARNING] ** Multibyte character encodings (like UTF8) are not supported at the moment."

Windows

Amikor a 'cycle' fordítást használom, ezt kapom: The name specified is not recognized as an internal or external command, operable program or batch file.>& was unexpected at this time.

Amikor 'cycle' fordítást használom, ezt kapom: make[3]: ./ppc1.exe: Command not found

Nem tudni miért, a make elfelejti az útvonalat. Próbáld meg a 'cycle' fordítást az alapkönyvtár beállításával futtatni, így: make cycle BASEDIR=your_fpc_source_dir_herecompiler

Amikor a Lazarus-t újra akarom fordítani (make parancsal), üzenetet kapok:

make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * [interfaces_all] Error 2

Frissítened kell a make fájlt.

makefile:27: *** You need the GNU utils package to use this Makefile. Stop.

Ellenőrizd, hogy az FPC-t nem egy olyan útvonalra telepítetted, aminek a nevében szóköz is van. A Makefile-ban nem támogatott.

Hogyan adhatok a programomnak XP kinézetet, mint amilyen a Lazarus-nak is van?

A menüből indulva: "Project -> Project Options -> Use manifest to enables themes" legyen bejelölve.

Amikor egy Lazarus-szal készített alkalmazást futtatok, az DOS ablakkal indul

Mac OS X

Miért áll le a fordítás 'unknown section attribute: no_dead_strip' üzenettel?

Engedélyek

Készíthetek kereskedelmi alkalmazásokat a Lazarus-szal?

Miért van egyes komponensek használata korlátozva kereskedelmi alkalmazásokban?

Honnan tudhatom meg, hogy egy komponens az LCL része-e?

Készíthetek kereskedelmi bővítményt a Lazarus-hoz?

Közreműködők és megjegyzések

Ez az oldal az angol nyelvű oldal fordítása, mely az epikwiki változat alapján készült.