Použitie príkazu "ldd" v systéme Linux

Príkaz ldd sa môže použiť na zobrazenie zdieľaných knižníc požadovaných daným programom.

To je užitočné pri práci, keď je chýbajúca závislosť a môže sa použiť na vypísanie chýbajúcich funkcií a objektov.

ldd Syntax príkazov

Toto je správna syntax pri použití príkazu ldd:

ldd [OPTION] ... FILE ...

Tu sú dostupné príkazy ldd, ktoré je možné vložiť do miesta [OPTION] vo vyššie uvedenom príkaze:

- help vytiahnuť túto pomoc a skončiť - verziu vytlačiť informácie o verzii a ukončit -d, --data-relocs spracovanie dátových premiestnení -r, --function-relocs spracovanie údajov a funkcií relokácie -u, --unused tlač nepoužívaných priamych závislostí -v, --verbose vytlačiť všetky informácie

Ako používať príkaz ldd

Môžete použiť nasledujúci príkaz na získanie ďalších informácií z ľubovoľného príkazu ldd:

ldd -v / cesta / do / program / spustiteľný

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 path / to / program

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)

Dôležité: Nikdy nespúšťajte príkaz ldd proti nedôveryhodnému programu, pretože príkaz by ho mohol skutočne spustiť. Je to bezpečnejšia alternatíva, ktorá ukazuje 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ť viacerými spôsobmi.

Napríklad takto nájdete cestu k Firefoxu :

nájsť / -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:

Tento prístup je trochu prehnaný a možno budete musieť použiť sudo príkaz zvýšiť svoje privilégiá, inak je pravdepodobné, že dostanete veľa zamietnutých oprávnení chyby.

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, do ktorej bude knižnica načítaná do pamäte.

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