Skip to main content

Nájdite zdieľané knižnice programu s príkazom "ldd"

Anonim

Použi ldd príkaz na zobrazenie zdieľaných knižníc potrebných pre akýkoľvek daný program - užitočné pre spracovanie, keď chýba závislosť. Príkaz tiež obsahuje chýbajúce funkcie a objekty.

ldd Syntax príkazov

Sledujte správnu syntax príkazu ldd, aby ste sa vyhli chybám:

ldd OPTION … FILE …

Použite jeden alebo viac dostupných príkazov ldd, ktoré sú vložené do priečinka VOĽBA miesto vo vyššie uvedenom príkaze:

--help | vytlačte túto pomoc a ukončite jej verzia vytlačiť informácie o verzii a výstup -d, --data-relocs | procesné presuny údajov -r, - funkcia-relocs | procesné premiestňovanie údajov a funkcií -u, --unused | tlač nepoužívaných priamych závislostí -v, --verbose | vytlačte všetky informácie

Ako používať príkaz ldd

Ak chcete získať viac informácií o programe, spustite nasledujúci príkaz:

$ ldd -v / cesta / do / program / spustiteľný súbor

Výstup zobrazuje informácie o verzii, ako aj cesty a adresy do zdieľaných knižníc, napríklad:

$ ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Ak súbor SO neexistuje vôbec, chýbajúce knižnice nájdete pomocou nasledujúceho príkazu:

$ ldd -d cesta / do / programu

Výstup je podobný nasledujúcemu:

linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => ​​nie je foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) /lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Nikdy nespúšťajte príkaz ldd proti nedôveryhodnému programu, pretože ldd ho môže skutočne vykonať. Namiesto toho použite bezpečnejšiu alternatívu, ktorá zobrazuje iba priame závislosti a nie celý strom závislosti:

$ objdump -p / path / to / program grep POTREBNÉ

Ako nájsť cestu k aplikácii

Musíte poskytnúť úplnú cestu k aplikácii, ak chcete nájsť jej závislosti s ldd, čo môžete urobiť niekoľkými spôsobmi.

Napríklad takto nájdete cestu k Firefoxu:

$ find / -name firefox

Problém s príkazom nájsť však je, že nebude obsahovať len spustiteľný súbor, ale všade, kde sa nachádza Firefox, a to takto:

  • /etc/skel/.mozilla/firefox
  • / Home // cache / mozilla / firefox
  • /home//.mozilla/firefox
  • / Usr / bin / Firefox
  • / Usr / lib / Firefox
  • / Usr / lib / Firefox / Firefox

Tento prístup je trochu prehnaný a možno budete musieť použiť príkaz sudo na zvýšenie vašich privilégií, inak je pravdepodobné, že dostanete veľa chýb povolených povolenia.

Namiesto toho je oveľa jednoduchšie použiť príkaz ifis na nájdenie cesty aplikácie:

$ whereis firefox

Tentokrát výstup môže vyzerať takto:

/ Usr / bin / firefox

/ Etc / firefox

/ Usr / lib / firefox

Všetko, čo musíte urobiť, ak chcete nájsť zdieľané knižnice pre Firefox, je zadajte nasledujúci príkaz:

$ ldd / usr / bin / firefox

Výstup z príkazu bude takýto:

linux-vdso.so.1 (0x00007ffff8364000)libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007feb9917a000)libdl.so.2 => /usr/lib/libdl.so.2 (0x00007feb98f76000)libstdc ++ .to.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)

Linux-vdso.so.1 je názov knižnice a hexadecimálne číslo je adresa, kam sa knižnica načíta v pamäti.

Na mnohých ďalších riadkoch si všimnete, že po symbole => nasleduje cesta. Toto je cesta k fyzickej binárne; hexadecimálnym číslom je adresa, na ktorej bude knižnica načítaná.