Az ldd parancs segítségével megmutathatja az adott programhoz szükséges megosztott könyvtárakat.
Ez hasznos a hiányzó függőség hiányában, és a hiányzó függvények és objektumok felsorolására használható.
ldd Command Syntax
Ez a megfelelő szintaxis az ldd parancs használatakor:
ldd [OPCIÓ] ... FÁJL ...Itt találhatók a rendelkezésre álló ldd parancskapcsolók, amelyeket a fenti parancs [OPTION] pontjába lehet beilleszteni:
- segítségnyomtatás kinyomtatáshoz és kilépéshez --verzió nyomtatási verzió információ és exit -d, --adatok-relocs folyamatadatok áthelyezése -r, --funkció-relocs folyamatadatok és funkció áthelyezések -u, --nem használt nyomtatás fel nem használt közvetlen függőségek -v, --verbose nyomtassa ki az összes információtAz ldd parancs használata
A következő parancs segítségével további információkat kaphat bármely ldd parancsból:
ldd -v / path / to / program / végrehajthatóA kimenet a verzióinformációkat, valamint a megosztott könyvtárak elérési útját és címét mutatja meg:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Ha a SO fájl egyáltalán nem létezik, a hiányzó könyvtárakat a következő paranccsal találhatja meg:
ldd -d útvonal / program / programA kimenet hasonló a következőhöz:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)Fontos: soha ne futtassa az ldd parancsot egy nem megbízható program ellen, mivel a parancs ténylegesen végrehajtja. Ez egy biztonságosabb alternatíva, amely csak a közvetlen függõségeket mutatja, nem pedig az egész függõségi fát: objdump -p / path / to / program | SZÜLETETT .
Hogyan keressük meg az alkalmazás elérési útját
Meg kell adnod az alkalmazás teljes elérési útját, ha meg akarjuk találni az függvényeket az ldd-vel, amit számos módon elvégezhet.
Így például megtalálhatja a Firefox elérési útját:
keresse meg a / -name firefox parancsotA probléma a Find parancssal azonban az, hogy nem csak a végrehajtható fájlt felsorolja, hanem mindenütt, ahol a Firefox található:
- /etc/skel/.mozilla/firefox
- / Home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / Usr / bin / Firefox
- / Usr / lib / Firefox
- / Usr / lib / Firefox / Firefox
Ez a megközelítés egy kicsit túlzás, és szükség lehet a sudo parancs használatára a kiváltságok emelésére, különben valószínűleg sok engedélyt elutasított hiba van.
Ehelyett sokkal könnyebb használni a whereis paranccsal az alkalmazás elérési útját:
ahol firefoxEz a kimenet így néz ki így:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Mindössze annyit kell tennie, hogy megtalálja a megosztott könyvtárakat a Firefox írja be a következő parancsot:
ldd / usr / bin / firefoxA parancs kiadása így fog történni:
linux-vdso.so.1 (0x00007ffff8364000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)
libstdc ++, so.6 => /usr/lib/libstdc++.so.6 (0x00007feb98bf4000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007feb988f6000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007feb986e0000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007feb9833c000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb99397000)
A linux-vdso.so.1 a könyvtár neve és a hex szám a cím, ahol a könyvtár betöltődik a memóriába.
A többi sorban a következőket veszi észre: a => szimbólumot egy utat követi. Ez a fizikai bináris elérési útja; a hex szám a cím, ahol a könyvtár betöltődik.