Skip to content

Použití příkazu ‚ldd‘ v systému Linux

18 de Červenec de 2021
find shared libraries ldd command 4017941 565ec6c33676418f9c18a5603b7d275f

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)

Linux ldd chybí příkaz

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

Linux objdump ldd alternativa

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

Linux kde příkaz

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.