Hirdetés

Keresé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.

  • ngabor2

    nagyúr

    válasz VladimirR #2371 üzenetére

    igen, közben még egyszer átnéztem, és javítottam.

    az, hogy a ./configure megtalálja, az nem elég. annak a dev-csomagok kellenek, azokat meg valszeg megtalálta. az ld.so.conf-ban levő kt-kat nézi át libek után.

    nem kell utána újrafordítani, csak egy progit kell futtatni (asszem dl, vagy valami hasonló... ennek is mindjárt utánanézek...)

    a libaa.so pedig így látatlanban az aalib csomagban lesz, mindjárt utánanézek.

    mod: megnéztem, nem sokat tévedtem :D [link]
    aalib1-dev csomag kell neked.

    mod2: dl a progi neve, alapcsomagban van, tehát fenn lesz.

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