ld.so/ld-linux.so - dinamikus linker és
betöltő
ld.so betölti a program futtatásához
szükséges megosztott könyvtárakat (library),
előkészíti a program futtatását, majd
futtatja. Minden Linux program hiányos és futási
időben további linkelést igényel, hacsak a
fordításkor nem volt megadva az ld -static
kapcsolója.
A program futtatásához szükséges
megosztott könyvtárakat megadott sorrendben keresi meg a
rendszer az alábbi helyeken:
- o
- Az LD_LIBRARY_PATH környezeti változóban
levő elérési út, (illetve az
LD_AOUT_LIBRARY_PATH az a.out formátumú
programokhoz). Kivétel, ha a végrehajtható
állomány setuid vagy setgid bitje be van
állítva, mert ekkor ezt a környezeti
változót nem veszi figyelembe.
- o
- A cache fájl (/etc/ld.so.cache), amely azoknak a
könyvtáraknak a listáját tartalmazza,
amelyeket a rendszer előzőleg megtalált a
kiegészített elérési úton.
- o
- Az alapértelmezett elérési út az
/usr/lib, és utána a /lib.
- LD_LIBRARY_PATH
- Azoknak az könyvtáraknak (directory) a listája
vesszőkkel elválasztva, amelyekben a rendszer az ELF
megosztott könyvtárakat keres futási időben.
Hasonló a PATH környezeti
változóhoz.
- LD_PRELOAD
- Ebben a környezeti változóban kell megadni azoknak az
ELF megosztott könyvtáraknak a nevét
´whitespace´ karakterekkel elválasztva, amelyeket az
összes többi megosztott könyvtár előtt
kell betölteni. Ezáltal elérhető, hogy a
többi megosztott könyvtárban levő
függvények helyett az itt megadottakban szereplőket
használja a program.
- LD_AOUT_LIBRARY_PATH
- Azoknak a könyvtáraknak a listája vesszőkkel
elválasztva, amelyekben az a.out megosztott
könyvtárakat keresi a rendszer futási időben.
Hasonló a PATH környezeti
változóhoz.
- LD_AOUT_PRELOAD
- Ebben a környezeti változóban kell megadni azoknak az
a.out megosztott könyvtáraknak a nevét
´whitespace´ karakterekkel elválasztva, amelyeket az
összes többi megosztott könyvtár után
kell betölteni. Ezáltal elérhető, hogy a
többi megosztott könyvtárban levő
függvények helyett az itt megadottakban szereplőket
használja a program.
- LD_NOWARN
- Nem figyelmeztet ha az a.out könyvtárak kisebb (minor)
verziószáma eltér.
- LD_KEEPDIR
- A betöltendő a.out megosztott könyvtárak
nevében nem hagyja figyelmen kívül a
könyvtár (directory) nevét. Nem javasolt ennek a
lehetőségnek a használata.
- /lib/ld.so
- a.out dinamikus linker és betöltő
- /lib/ld-linux.so.*
- ELF dinamikus linker és betöltő
- /etc/ld.so.cache
- Ez a fájl azoknak a könyvtáraknak
listáját tartalmazza, amelyekben a megosztott
könyvtárakat kell keresni. Tartalmazza továbbá
a lehetséges megosztott könyvtárak rendezett
listáját.
- /etc/ld.so.preload
- A fájl a program betöltése előtt
betöltendő ELF megosztott könyvtárak
´whitespace´ karakterrel elválasztott
listáját tartalmazza.
- lib*.so*
- megosztott könyvtárak
Pillanatnyilag az ld.so semmilyen módon nem tudja a
betöltött könyvtárat kirakni (unload), és
megkeresni a könyvtár kompatíbilis vagy újabb
verzióját.
Az ld.so csak azokra a végrehajtható
fájlokra működik, amelyeket a libc 4.4.3-as vagy
magasabb verziójával fordították.
David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
Torvalds, Lars Wirzenius és Mitch D'Souza (nem
feltétlenül ebben a sorrendben).
Tímár András <timar_a@freemail.hu>