"Ldd" komandą galima naudoti norint parodyti bendrai naudojamas bibliotekas, kurių reikia bet kuriai programai.
Tai naudinga dirbant, kai trūksta priklausomybės ir gali būti naudojamas sąraše trūkstamų funkcijų ir objektų.
ldd komandų sintaksė
Tai yra tinkama sintaksė naudojant komandą ldd:
ldd [OPTION] ... FILE ...Čia yra galimi ldd komandų jungikliai, kuriuos galima įterpti į [OPTION] vietą, esančią aukščiau pateiktoje komandoje:
- help print this help and exit - version print version information and exit -d, -data-relocs proceso duomenų relocations -r, -function-relocs proceso duomenys ir funkcijos relocations -u, --unused print unused direct dependencies -v, --verbose spausdinti visą informacijąKaip naudoti ldd komandą
Galite naudoti šią komandą, kad gautumėte daugiau informacijos iš bet kurios ldd komandos:
ldd -v / path / to / program / executableIšėjimas rodo informaciją apie versiją, taip pat kelius ir adresus bendrai naudojamoms bibliotekoms, pvz .:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Jei SO failas apskritai neegzistuoja, galite rasti trūkstamas bibliotekas naudodami šią komandą:
ldd-d kelias / į / programaRezultatas yra panašus į sekantį:
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)Svarbu: niekada paleiskite komandą ldd nepatikimoje programoje, nes komanda gali iš tikrųjų ją vykdyti. Tai saugesnė alternatyva, rodanti tik tiesiogines priklausomybes, o ne visą priklausomybės medį: objdump-p / path / to / program | grep REIKIA .
Kaip rasti kelią prie paraiškos
Turite pateikti visą kelią prie programos, jei norite rasti priklausomybes nuo "ldd", kurį galite atlikti keliais būdais.
Pvz., Tai, kaip norite rasti kelią " Firefox" :
rasti / -name firefoxTačiau problema su komandą "find" reiškia, kad jis ne tik nurodo vykdomąjį failą, bet visur, kur yra "Firefox", kaip šis:
- /etc/skel/.mozilla/firefox
- / home / cache / mozilla / firefox
- /home//.mozilla/firefox
- / usr / bin / "Firefox"
- / usr / lib / "Firefox"
- / usr / lib / Firefox / Firefox
Šis metodas yra šiek tiek overkill, ir jums gali prireikti naudoti komandą sudo, kad padidintumėte privilegijas, kitaip jūs tikriausiai gausite daugybę leidimų, dėl kurių neteksite klaidų.
Vietoje to, daug lengviau naudoti komandą " find", norėdami rasti programos kelią:
kuris firefoxŠį kartą produkcija gali atrodyti taip:
/ usr / bin / firefox
/ etc / firefox
/ usr / lib / firefox
Viskas, ką jums reikia padaryti dabar, kad galėtumėte rasti bendrąsias "Firefox" bibliotekas, įveskite šią komandą:
ldd / usr / bin / firefoxKomandos išvestis bus tokia:
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 yra bibliotekos pavadinimas, o šešioliktainis numeris - tai adresas, į kurį biblioteka bus įkelta į atmintį.
Daugelyje kitų eilučių pastebėsite, kad po simboliu => eina kelias. Tai kelias į fizinę dvejetainę; šešioliktainis numeris yra adresas, kuriame bus įkelta biblioteka.