Hirdetés

Új hozzászólás Aktív témák

  • Jester01

    veterán

    válasz VladimirR #2371 üzenetére

    Egy kis háttérinformáció az ld-hez: igen, az a linker. Viszont van fordításidejű és futásidejű komponense. A fordítás során használt ld a klasszikus értelemben vett linker, object fájlokból gyárt neked futtatható programot. Ha használtál dinamikus librarykat akkor olyan programot kapsz aminek indításkor első dolga lesz meghívni a futásidejű linkert, aki szépen betölti neki a szükséges könyvtárakat. A windows-sal ellentétben itt nem csak fix helyeken keresi a libeket, hanem az említett /etc/ld.so.conf fájlban megadott directorykban (plusz az LD_LIBRARY_PATH környezeti változóban felsorolt helyeken). Hogy ne kelljen mindig a fájlrendszert túrni ezért van neki egy cache az /etc/ld.so.cache fájlban. Ezt az ldconfig parancs (felteszem ngabor erre gondolhatott :F ) hatására újragyártja ami egyúttal frissíti a libekre mutató szimbólikus linkeket is, a verziószámoknak megfelelően.

    A futásidejű linkerrel lehet mókás dolgokat csinálni, man ld.so. Egyik tipikus trükk az LD_PRELOAD használata, amivel explicit be lehet tölteni plusz könyvtárakat. Ez azért jó, mert felül lehet bírálni függvényeket.

    Jester

Új hozzászólás Aktív témák