Командата ldd може да се използва за показване на споделените библиотеки, изисквани от която и да е програма.
Това е полезно за обработка, когато има липсваща зависимост и може да се използва за изписване на липсващи функции и обекти.
ldd команден синтаксис
Това е правилният синтаксис при използване на командата ldd:
ldd [ОПЦИЯ] ... ФАЙЛ ...Тук са наличните ключове за командата ldd, които могат да бъдат въведени в [OPTION] място в горната команда:
--help отпечатване на тази помощ и излизане - версия на версията за печат на версията и излизане -d, --data-relocs обработка на данни премествания -r, --function-relocs обработка на данни и функционални премествания -u, - неприети отпечатване неизползвани директни зависимости -v, --verbose отпечатва цялата информацияКак да използвате командата ldd
Можете да използвате следната команда, за да получите повече информация от командата ldd:
ldd -v / path / to / програма / изпълнимРезултатът показва информация за версията, както и пътищата и адресите към споделените библиотеки, както следва:
ldd libshared.so linux-vdso.so.1 => (0x00007fff26ac8000) libc.so.6 => /lib/libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)Ако SO файлът изобщо не съществува, можете да намерите липсващите библиотеки, като използвате следната команда:
ldd -d път / към / програмаРезултатът е подобен на следния:
linux-vdso.so.1 (0x00007ffc2936b000) /home/gary/demo/garylib.so => не е foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)Важно: Никога не стартирайте командата ldd срещу ненадеждна програма, тъй като командата може действително да я изпълни. Това е по-безопасна алтернатива, която показва само директните зависимости, а не цялото дърво на зависимост: objdump -p / path / to / program | grep Нужда .
Как да намерите пътя към приложението
Трябва да предоставите пълния път към приложението, ако искате да намерите зависимостите му от него, които можете да направите по няколко начина.
Например, така ще откриете пътя към Firefox :
намерете / -име FirefoxПроблемът с командата за намиране обаче е, че той не само ще покаже изпълнимия файл, но и навсякъде, където се намира Firefox, както следва:
- /etc/skel/.mozilla/firefox
- / Дома // кеш / Mozilla / Firefox
- /home//.mozilla/firefox
- / ЮЕсАр / хамбар / Firefox
- / ЮЕсАр / ИЪ / Firefox
- / ЮЕсАр / ИЪ / Firefox / Firefox
Този подход е малко прекалено голям и може да се наложи да използвате командата sudo, за да издигнете вашите привилегии, в противен случай вероятно ще получите много отказани грешки.
Вместо това е много по-лесно да използвате командата whereis, за да намерите пътя на приложението:
където е огънТози път изходът може да изглежда така:
/ ЮЕсАр / хамбар / Firefox
/ и т.н. / огън
/ ЮЕсАр / ИЪ / Firefox
Всичко, което трябва да направите сега, за да намерите споделените библиотеки за Firefox, е да въведете следната команда:
ldd / usr / bin / firefoxРезултатът от командата ще бъде нещо като това:
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 е името на библиотеката и шестнадесетичното число е адресът, в който ще бъде заредена библиотеката в паметта.
Ще забележите на много от другите редове, че символът => е последван от път. Това е пътят до физическото двоично устройство; шестнадесетичния номер е адресът, в който ще бъде заредена библиотеката.