Příkaz ldd lze použít k zobrazení sdílených knihoven vyžadovaných kterýmkoli daným programem.
To je užitečné pro práci s chybějícími závislostmi a může být použito k zobrazení chybějících funkcí a objektů.
Syntaxe příkazu ldd
Toto je správná syntaxe při použití příkazu ldd:
ldd [OPTION] ... SOUBOR ...Zde jsou k dispozici příkazové přepínače ldd, které lze vložit do bodu [OPTION] ve výše uvedeném příkazu:
--help vytisknout tuto nápovědu a ukončit --version vytisknout informace o verzi a ukončit -d, --data-relocs zpracování dat přemístění -r, --function-relocs zpracování přemístění dat a funkcí -u, --unused použití nepoužívaných přímých závislostí -v, --verbose vytisknout všechny informaceJak používat příkaz ldd
Pomocí následujícího příkazu můžete získat další informace z libovolného příkazu ldd:
ldd -v / cesta / do / program / spustitelnýVýstup zobrazuje informace o verzi, stejně jako cesty a adresy sdílených knihoven, napří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)Pokud soubor SO neexistuje vůbec, můžete najít chybějící knihovny pomocí následujícího příkazu:
ldd -d path / to / programVýstup je podobný následujícímu:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => nebyl nalezenlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)Důležité: Nikdy nespouštějte příkaz ldd proti nedůvěryhodnému programu, protože příkaz jej může skutečně spustit. Jedná se o bezpečnější alternativu, která zobrazuje pouze přímé závislosti a ne celý strom závislosti: objdump -p / path / to / program | grep POTŘEBA .
Jak najít cestu k aplikaci
Musíte poskytnout úplnou cestu k aplikaci, pokud chcete najít její závislosti s ldd, které můžete provést několika způsoby.
Například takto najdete cestu k Firefoxu :
find / -name firefoxProblém s příkazem find však je, že nejen že bude obsahovat spustitelný soubor, ale všude, kde se nachází Firefox,
- /etc/skel/.mozilla/firefox
- / home // cache / mozilla / firefox
- /home//.mozilla/firefox
- / usr / bin / Firefox
- / usr / lib / Firefox
- / usr / lib / Firefox / Firefox
Tento přístup je trochu přeplněný a možná budete muset použít příkaz sudo k pozdvižení vašich oprávnění, jinak budete pravděpodobně dostat spousty chyb odepřen.
Místo toho je mnohem snazší použít příkaz whereis k nalezení cesty aplikace:
kde je firefoxTentokrát výstup může vypadat takto:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Jediné, co musíte udělat pro nalezení sdílených knihoven pro Firefox, je zadat následující příkaz:
ldd / usr / bin / firefoxVýstupem z příkazu bude něco jako:
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, do které bude knihovna načítána do paměti.
Na mnoha dalších řádcích si všimnete, že symbol => následuje cesta. Toto je cesta k fyzické binární; hexadecimálním číslem je adresa, na které bude knihovna načítána.