Използване на командата "ldd" в Linux

Командата 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, както следва:

Този подход е малко прекалено голям и може да се наложи да използвате командата 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 е името на библиотеката и шестнадесетичното число е адресът, в който ще бъде заредена библиотеката в паметта.

Ще забележите на много от другите редове, че символът => е последван от път. Това е пътят до физическото двоично устройство; шестнадесетичния номер е адресът, в който ще бъде заредена библиотеката.