Користење на командата "ldd" во Linux

ЛДД-командата може да се користи за да ги прикаже споделените библиотеки што се бараат од некоја дадена програма.

Ова е корисно за работа кога има недостаток на зависност и може да се користи за да ги наброите недостасуваните функции и објекти.

ldd Command Syntax

Ова е правилна синтакса при користење на командата ldd:

ldd [ОПЦИЈА] ... ДАТОТЕКА ...

Еве ги достапните ldd командни прекинувачи кои можат да бидат вметнати на местото [OPTION] во горенаведената команда:

- help отпечати ја оваа помош и излези - информации за верзијата за печатење за печатење и излез -d, - податоци за релации на податоци за податоци-податоци, -функции-relocs податоци за процесот и за преместување на функцијата -u, - неискористени печатени неискористени директни зависности -v, --верзирајте ги сите информации

Како да ја користите командата ldd

Можете да ја користите следнава команда за да добиете повеќе информации од која било команда на ldd:

ldd -v / path / to / program / извршна

Излезот ги прикажува информациите за верзијата, како и патеките и адресите на споделените библиотеки, на пример:

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 => ​​not foundlibc.so.6 => usr / lib / libc.so.6 (0x00007fd0c6259000) / lib64 / ld-linux-x86 -64.so.2 (0x00007fd0c65fd000)

Важно: Никогаш не ја стартувајте командата ldd против недоверлива програма, бидејќи командата всушност може да ја изврши. Ова е побезбедна алтернатива која ги покажува само директните зависности, а не целото дрво на зависност: objdump -p / path / to / program | grep ПОТРЕБНО .

Како да го пронајдете патот до апликацијата

Треба да го обезбедите целосниот пат до некоја апликација ако сакате да ги најдете неговите зависности со ldd, што можете да направите на повеќе начини.

На пример, ова е начинот на кој ќе најдете патека до Firefox :

најдете / -name firefox

Проблемот со командата find , сепак, е тоа што не само што ќе ја листа извршната датотека, туку и насекаде каде што се наоѓа Firefox:

Овој пристап е малку претерана и можеби ќе треба да ја користите командата sudo за да ги подигнете вашите привилегии, инаку веројатно ќе добиете многу грешки кои се одбиени од дозволата.

Наместо тоа, полесно е да се користи командата whereis да се пронајде патеката на апликацијата:

whereis firefox

Овој пат излезот може да изгледа вака:

/ usr / bin / firefox

/ etc / firefox

/ usr / lib / 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++soso.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 е името на библиотеката и хексадекот број е адресата каде библиотеката ќе биде вчитана во меморијата.

Ќе забележите на многу други линии дека симболот => го следи патот. Ова е патека до физичката бинарна; хексадекот е адресата каде што ќе се вчита библиотеката.