Poiščite knjižnice programa v skupni rabi z ukazom 'ldd'
Uporabi ldd ukaz za prikaz knjižnic v skupni rabi, ki jih zahteva kateri koli program. Ukaz ldd je uporaben za delo, ko manjka odvisnost. The ukaz navaja tudi manjkajoče funkcije in predmete.
Sintaksa ukaza ldd
Upoštevajte pravilno sintakso za ukaz ldd, da se izognemo napakam:
ldd [MOŽNOST]... MAPA...
Uporabite eno ali več razpoložljivih ukaznih stikal ldd, vstavljenih na mesto [OPTION] v zgornjem ukazu:
- --help: natisnite to pomoč in zapustite.
- --version: natisnite informacije o različici in zapustite.
- -d, --data-relocs: Obdelava premestitev podatkov.
- -r, --function-relocs: Obdelava podatkov in funkcij.
- -u, --unused: Natisnite neuporabljene neposredne odvisnosti.
- -v, --verbose: natisnite vse informacije.
Kako uporabljati ukaz ldd
Za več informacij o programu izvedite naslednji ukaz:
ldd -v /pot/do/program/izvedljiva
Izhod prikazuje informacije o različici ter poti in naslove do knjižnic v skupni rabi, kot je ta:
libshared.so
linux-vdso.so.1 => (0x00007fff26ac8000)
libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

Če datoteka SO sploh ne obstaja, lahko poiščete manjkajoče knjižnice z naslednjim ukazom:
ldd -d pot/do/program
Izhod je podoben naslednjemu:
linux-vdso.so.1 (0x00007ffc2936b000)
/home/gary/demo/garylib.so => ni mogoče najti libc.so.6 => usr/lib/libc.so.6 (0x00007fd0c6259000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd0c65fd000)

Nikoli ne zaženite ukaza ldd proti nezaupljivemu programu, ker ga lahko izvede ukaz ldd. Namesto tega uporabite varnejšo alternativo, ki prikazuje samo neposredne odvisnosti in ne celotnega drevesa odvisnosti:
objdump -p /pot/do/program | grep POTREBNO

Kako najti pot do aplikacije
Če želite poiskati njene odvisnosti z ldd, morate zagotoviti celotno pot do aplikacije, kar lahko storite na več načinov.
Tako je na primer najti pot do Firefox:
najdi / -ime firefox
Težava z ukaz najdivendar je, da navaja izvedljivo datoteko in povsod, kjer se Firefox nahaja, takole:
/etc/skel/.mozilla/firefox
/home//cache/mozilla/firefox
/home//.mozilla/firefox
/usr/bin/Firefox
/usr/lib/Firefox
/usr/lib/Firefox/Firefox
Ta pristop je malce pretiran in morda boste morali uporabiti ukaz sudo da bi dvignili svoje privilegije, sicer boste verjetno dobili napake z zavrnjenim dovoljenjem človeka.
Namesto tega je lažje uporabljati kjer je ukaz za iskanje poti aplikacije:
kje je firefox
Tokrat bi lahko izhod izgledal takole:
/usr/bin/firefox
/etc/firefox
/usr/lib/firefox

Nato, da poiščete knjižnice v skupni rabi za Firefox, vnesite naslednji ukaz:
ldd /usr/bin/firefox
Izhod ukaza bo nekako takole:
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 ime knjižnice, šestnajstiška številka pa je naslov, kamor se knjižnica naloži v pomnilnik.
V mnogih vrsticah, => simbolu sledi pot. To je pot do fizične binarnosti. Šestnajstiška številka je naslov, kamor je knjižnica naložena.