Použijte ldd příkaz pro zobrazení sdílených knihoven požadovaných libovolným daným programem. Příkaz ldd je užitečný pro výpočet, když chybí závislost. Příkaz také vypíše chybějící funkce a objekty.
Syntaxe příkazu ldd
Dodržujte správnou syntaxi příkazu ldd, abyste předešli chybám: ldd [OPTION]… SOUBOR …
Použijte jeden nebo více dostupných přepínačů příkazů ldd vložených do souboru [OPTION] místo ve výše uvedeném příkazu:
- –help: vytisknout tuto nápovědu a ukončit.
- –version: Tisk informací o verzi a ukončení.
- -d, –relocs: Přemístění dat zpracování.
- -r, –funkce-přemístění: Zpracování přemístění dat a funkcí.
- -u, –unused: Tiskne nepoužívané přímé závislosti.
- -v, –verbose: Vytiskne všechny informace.
Jak používat příkaz ldd
Spuštěním následujícího příkazu získáte další informace o programu: ldd -v / cesta / k / programu / spustitelný soubor
Výstup zobrazuje informace o verzi i cesty a adresy ke sdíleným knihovnám, například: libshared.so
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)
Pokud soubor SO vůbec neexistuje, můžete najít chybějící knihovny pomocí následujícího příkazu: ldd -d cesta / k / programu
Výstup je podobný tomuto: 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)
Nikdy nespouštějte příkaz ldd proti nedůvěryhodnému programu, protože by jej mohl spustit příkaz ldd. Místo toho použijte bezpečnější alternativu, která zobrazuje pouze přímé závislosti a ne celý strom závislostí: objdump -p / cesta / k / programu | grep POTŘEBA
Jak najít cestu k aplikaci
Pokud chcete najít její závislosti pomocí ldd, musíte zadat úplnou cestu k aplikaci, což můžete udělat několika způsoby. Takto například najdete cestu k Firefoxu: find / -name firefox
Problém s příkazem find však spočívá v tom, že obsahuje seznam spustitelných souborů a všude, kde se Firefox nachází, například: /etc/skel/.mozilla/firefox
/ home // mezipaměť / mozilla / firefox
/home//.mozilla/firefox
/ usr / bin / Firefox
/ usr / lib / Firefox
/ usr / lib / Firefox / Firefox
Tento přístup je trochu přehnaný a možná budete muset použít příkaz sudo ke zvýšení vašich oprávnění, jinak byste pravděpodobně dostali chyby odepření oprávnění člověku. Místo toho je snazší použít cestu whereis k nalezení cesty aplikace: whereis firefox
Tentokrát může výstup vypadat takto: / usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Chcete-li vyhledat sdílené knihovny pro Firefox, zadejte následující příkaz: ldd / usr / bin / firefox
Výstup z příkazu bude asi takový: 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)
Linux-vdso.so.1 je název knihovny a hexadecimální číslo je adresa, na kterou je knihovna načtena do paměti. Na mnoha řádcích je => za symbolem následuje cesta. Toto je cesta k fyzické binárce. Šestnáctkové číslo je adresa, na kterou je knihovna načtena.