Ez a HOGYAN programozóknak készült, és összefoglalja, hogyan készíthetsz és használhatsz programkönyvtárakat Linuxon, a GNU eszközkészlet felhasználásával. A "programkönyvtár" kifejezés egyszerűen egy olyan fájlt jelöl, ami lefordított tárgykódot (és adatot) tartalmaz, amit később egy programmal össze lehet szerkeszteni (link). A programkönyvtárak lehetővé teszik, hogy az alkalmazás modulárisabb, gyorsabban újrafordítható és könnyebben frissíthető legyen. A programkönyvtárakat három típusba sorolhatjuk: statikus programkönyvtárak, megosztott programkönyvtárak és dinamikusan betölthető (DL) programkönyvtárak.
Ez a leírás először a statikus programkönyvtárakkal foglalkozik, melyeket a program futtatása előtt kell az alkalmazáshoz szerkeszteni. Ezt követően foglalkozik a megosztott (shared) programkönyvtárakkal, amelyek a program indulásakor töltődnek be, és több program között megoszthatóak. Végül pedig a dinamikusan betölthető (DL) programkönyvtárakról lesz szó, amiket a programvégrehajtás alatt tölthetünk be. A DL programkönyvtárak nem igazán térnek el formátumban a másik két programkönyvtár-típustól (mind statikus, mind megosztott programkönyvtárak lehetnek DL programkönyvtárak), a különbség abból adódik, hogyan használják a programozók a DL programkönyvtárakat. A HOGYAN egy fejezetnyi példával és egy fejezetnyi hivatkozással zárul.
Minden programozónak, aki programkönyvtárakat fejleszt elvileg megosztott programkönyvtárakat kellene készítenie azért, hogy lehetővé tegye a felhasználóknak a programkönyvtárak alkalmazástól független frissítését. A dinamikusan betölthető (DL) programkönyvtárak hasznosak, de kicsivel több munkát igényel a használatuk, és sok programnak nincs szüksége arra a rugalmasságra amit nyújtanak. Ezzel szemben a statikus programkönyvtárak sokkal körülményesebbé teszik a frissítést. Ezért ritkán ajánlott a használatuk. Ezzel együtt mindegyik programkönyvtár-típusnak van előnye, mely előnyöket egy-egy fejezetben foglaljuk össze a későbbiekben. A dinamikusan betölthető (DL) programkönyvtárakat használó C++ fejlesztőknek a "C++ dlopen mini-HOGYAN" is ajánlott olvasmány.
Elég szerencsétlen, hogy jó néhányan a dinamikusan szerkesztett (linked) programkönyvtárak (DLL-ek) kifejezést használják a megosztott programkönyvtárakra. Mások ugyanezt a kifejezést bármely olyan programkönyvtárra használják, mely dinamikusan betölthető. Megint mások a DLL-t a programkönyvtárakra használják megkötések nélkül. Függetlenül attól, hogy te mit értesz alatta, ez a HOGYAN a DLL-ekkel foglalkozik Linuxon.
A HOGYAN csak a ELF (Executable and Linking Format) formátumú futtatható fájlokkal és programkönyvtárakkal foglalkozik. Ezt a formátumot használja a legtöbb Linux terjesztés. A GNU gcc eszközkészlet ettől eltérő formátumokat is képes kezelni, például a legtöbb Linux terjesztés még mindig használja az elavult a.out formátumot. Ugyanakkor ez a formátum kívül esik ennek a HOGYANnak a témakörén.
Ha hordozható alkalmazás szeretnél készíteni, akkor megfontolandó a GNU libtool használata. Ebben az esetben a programkönyvtárakat ezzel az eszközzel készíted és telepíted, a linuxos eszközök közvetlen használata helyett. A GNU libtool egy általános programkönyvtár-készítést és telepítést támogató szkript-készlet, ami konzisztens és hordozható felülettel rejti el a megosztott programkönyvtárak használatának bonyolultságát. Linuxon a GNU libtool azokra az eszközökre és egyezményekre épül közvetlenül, melyeket ez a HOGYAN tárgyal. Számtalan hordozhatóságot biztosító illesztőfelület (wrapper) létezik dinamikusan betölthető programkönyvtárakhoz is. A GNU libtool tartalmaz egy ilyen illesztőfelület programkönyvtárat "libltdl" néven. Egy másik alternatíva lehet a glib programkönyvtár használata (nem összekeverendő a glibc-vel), ami hordozható támogatást nyújt a dinamikusan betölthető modulokhoz. További információt a http://developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-modules.html honlapon találsz. Még egyszer: Linuxon ez a funkció az ebben a HOGYANban leírt módszerekkel is megvalósítható. Ha jelenleg Linuxon fejlesztesz vagy hibát keresel, akkor valószínűleg az ebben a HOGYANban található információkra lesz szükséged.
A http://www.dwheeler.com/program-library webhely a központi elérési helye a HOGYANnak (angol verzió), az elkészítésében közreműködött a The Linux Documentation Project (http://www.tldp.org). A szerzői jogokat David A. Wheeler birtokolja Copyright (C) 2000, a dokumentumra a General Public License (GPL) érvényes; további információt az utolsó fejezetben találsz erről.
A magyar fordítást Szalai Ferenc Attila készítette (2003.12.11). A lektorálást Daczi László végezte el (2004.03.01). A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.
Előző | Tartalomjegyzék | Következő |
Programkönyvtár HOGYAN | Statikus programkönyvtárak |