Lazarus Faq/hu

From Free Pascal wiki
Revision as of 07:40, 15 July 2010 by Gábor (talk | contribs)
Jump to navigationJump to search

العربية (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

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.