2. Statikus programkönyvtárak

A statikus programkönyvtárak közönséges tárgykód-fájlok gyűjteményei. Megállapodás szerint a statikus programkönyvtárak ".a" kiterjesztéssel végződnek. Egy ilyen gyűjtemény az ar (archiver) programmal készíthető. A statikus programkönyvtárakat ma már nem használják olyan gyakran, mint régebben, figyelembe véve a megosztott programkönyvtárak előnyeit (lásd lejjebb). Néha azonban, még mindig készítenek ilyeneket. Történelmileg ők jelentek meg először, és egyszerűbb is elmagyarázni működésüket.

A statikus programkönyvtárak lehetővé teszik a felhasználóknak, hogy újrafordítás nélkül szerkesszék őket a programokhoz, ezzel lerövidítve a fordítási időt. Megjegyezzük, hogy a mai gyors fordítók mellett a újrafordítási idő kevésbé fontos szempont, így ez ma már nem olyan erős érv, mint régebben. A statikus programkönyvtárak gyakran hasznosak azoknak a fejlesztőknek, akik lehetővé akarják tenni a programozók számára, hogy szerkesszék a programjukat a programkönyvtárukhoz, de nem akarják a programozók rendelkezésére bocsátani a programkönyvtár forrását. (Ez előnyös lehet a programkönyvtár forgalmazójának, de nyilvánvalóan hátrányos annak a programozónak, aki azt használni szeretné). Elméletileg a programhoz csatolt statikus ELF programkönyvtárban lévő kód kissé gyorsabban (1-5%-al) futhat, mint a megosztott vagy dinamikusan betölthető programkönyvtárban lévő. Gyakorlatilag ez ritkán ad okot a statikus programkönyvtárak használatára, az egyéb zavaró tényezők miatt.

A statikus programkönyvtár készítéséhez, vagy a már meglévő program könyvárhoz új tárgykód-fájlok hozzáadásához az alábbi utasítást használjuk:

ar rcs my_library.a file1.o file2.o

Ez az egyszerű utasítás hozzáadja a file1.o és file2.o tárgykód-fájlokat a my_library.a statikus programkönyvtárhoz. Létrehozza a my_library.a fájlt, ha az nem létezett. További információkat a statikus programkönyvtárak készítéséről az ar(1)-ben találsz.

Ha elkészítettél egy statikus programkönyvtárat nyilván használni is akarod. Úgy használhatod a statikus programkönyvtárat, hogy hivatkozol rá fordítási és szerkesztési folyamatnak abban a fázisában, amikor a program futtatható fájlja készül. Ha gcc(1)-et használsz a futtatható fájl készítésére, akkor a -l opcióval írhatod elő használni kívánt programkönyvtárak programhoz szerkesztését. További információt az info:gcc-ben találsz.

Légy óvatos a paraméterek sorrendjével, ha gcc-t használsz. Mivel a -l a szerkesztő (linker) kapcsolója, így azt a fordítandó fájl neve UTÁN tedd. Ez egy kicsit különbözik a normális kapcsolómegadási szintaxistól. Ha a fájl elé teszed a -l opciót, akkor a csatolás tökéletesen hibás lesz és misztikus hibákat eredményez.

Használhatod a linker programot ld(1) közvetlenül is a -l és -L opciókkal, de a legtöbb esetben jobb a gcc(1)-t használni, mivel az ld(1) interfésze nagyobb valószínűséggel változik, mint a gcc fordítóé.