Objektumkönyvtár

A HupWiki-ből...

(Library szócikkből átirányítva)

Tartalomjegyzék

Áttekintés

A Unix (és sok más operációs rendszer is) képes az egymással összefüggő tárgykódú állományokat egy fájlban összefogva tárolni. Az ilyen fájlokat nevezzük objektumkönyvtárnak. Az objektumkönyvtárak egy szerkesztőprogram segítségével összeszerkeszthetők egymással és más tárgykódú állományokkal, így végrehajtható állományokat vagy újabb, összetett objektumkönyvtárakat hozhatunk létre. Egy objektumkönyvtár lehet statikus vagy dinamikus, ezt az összeszerkesztéskor kell megadni. A leggyakrabban használt a szabványos C könyvtár, aminek egyik megvalósítása a glibc.

Statikus Objektumkönyvtárak

A statikus objektumkönyvtárak a fordítás során hozzászerkesztődnek a programunkhoz, így annak lesz egy saját, bármikor elérhető másolata a könyvtárról, így szabadon hozzáférhet a bennük tárolt szimbólumokhoz (függvényekhez, változókhoz, stb.).

A megoldás hátránya, hogy ha több program használja ugyanazt a könyvtárat, akkor az mindegyik program méretét megnöveli, és a memóriába is többször kerül betöltésre. Az is gondot okoz, hogy ha egy statikus könyvtárat frissítünk, akkor minden azt használó programot újra kell fordítani.

A Unixban az ilyen könyvtárak általában .a kiterjesztést kapnak.

Osztott (Dinamikus) Objektumkönyvtárak

Ennél a megoldásnál a szerkesztés nagy részét az operációs rendszer szerkesztő alrendszere (loader) végzi futásidőben. A fordítás során a szerkesztőprogram rögzíti, hogy melyik könyvtárakat és hogyan kell majd betölteni. Létrehoz egy táblázatot (import directory), amibe bejegyzi a könyvtárban tárolt szimbólumok (függvények, változók, stb.) elérési pontjait, amin keresztül futásidőben el lehet érni őket.

A programvégrehajtás során aztán a loader megkeresi és betölti a fordításkor megadott könyvtárakat, és beállítja a megfelelő hivatkozásokat az import directory-ben. (Vagy a program betöltésekor, vagy a könyvtárban található valamely szimbólumra való első hivatkozáskor).

Ez a módszer kiküszöböli a statikus objektumkönyvtárak alkalmazásának hátrányait, de a loader működése némi sebességcsökkenést okoz.

A Unixban az ilyen könyvtárak általában .so kiterjesztést kapnak.

Lásd Még

Külső Hivatkozások

FIXME