Skip to main content

Keresse meg a program megosztott könyvtárait az "ldd" paranccsal

AZ - The Come Up (Prod. By DJ Premier) (Lehet 2024)

AZ - The Come Up (Prod. By DJ Premier) (Lehet 2024)
Anonim

Használja a ldd paranccsal megmutathatja az adott program által megkövetelt megosztott könyvtárakat - hasznos lehet a hiányzó függőség hiányának kialakításához. A parancs felsorolja a hiányzó függvényeket és objektumokat is.

ldd Command Syntax

A hibák elkerülése érdekében tartsa be az ldd parancs megfelelő szintaxisát:

ldd OPCIÓ … FÁJL …

Használjon egy vagy több rendelkezésre álló ldd parancskapcsolót, amelyet a VÁLASZTÁSI LEHETŐSÉG pont a fenti parancsban:

--help | nyomtassa ki ezt a súgót és lépjen ki --verzió | nyomtatott verzió információ és kilépés -d, --adata-relocs | folyamatadatok áthelyezése -r, -funkció-relocs | folyamatadatok és funkciók áthelyezése -u, - felhasználva nyomtassa ki a nem használt közvetlen függőségeket -v, --verbose | nyomtasson ki minden információt

Az ldd parancs használata

A következő parancs végrehajtásával további információkat kaphat egy programró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 / program

A 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)

Soha ne futtassuk az ldd parancsot egy nem megbízható program ellen, mert az ldd ténylegesen végrehajtja. Ehelyett olyan biztonságosabb alternatívát használjon, amely csak a közvetlen függőséget mutatja, és nem 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 szeretnéd találni az függvényeket az ldd-vel, amit többféle módon tehet meg.

Így például megtalálhatja a Firefox elérési útját:

$ find / -name firefox

A 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élyezéstől elutasított hibát kap.

Ehelyett sokkal könnyebb használni a whereis paranccsal az alkalmazás elérési útját:

$ whereis firefox

Ez 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 / firefox

A 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.