Օգտագործելով «ldd» հրամանատարը Linux- ում

Ldd հրամանը կարող է օգտագործվել, ցույց տալով ձեզ տրամադրված ընդհանուր գրադարանները, որոնք պահանջվում են տվյալ ծրագրի կողմից:

Սա օգտակար է այն մշակման համար, երբ կա անհայտ կախվածություն եւ կարող է օգտագործվել բացակայող գործառույթների եւ օբյեկտների ցանկը:

ldd հրամանների շարահյուսություն

Սա ldd հրամանի օգտագործման պատշաճ շարադրանքն է .

ldd [OPTION] ... FILE ...

Ահա մատչելի ldd հրամանները, որոնք կարող են տեղադրվել վերը նշված հրամանով [OPTION] կետում:

- օգնեք տպել այս օգնությունը եւ դուրս գալ - տարբերակով տպել տարբերակի տեղեկատվությունը եւ ելքը -d, -data- relocs գործընթացը տվյալների տեղափոխումը -r, -function- relocs գործընթացը տվյալների եւ գործառույթների տեղափոխում -u, - օգտագործված տպագիր չօգտագործված ուղղակի կախվածությունները -v, - ամբողջովին տպել բոլոր տեղեկությունները

Ինչպես օգտագործել ldd հրամանը

Դուք կարող եք օգտագործել հետեւյալ հրամանները, ցանկացած տեղեկություն ստանալու համար ցանկացած ldd հրաման:

ldd -v / path / to / program / executable- ը

Արդյունքը ցույց է տալիս տարբերակային տեղեկատվությունը, ինչպես նաեւ նմանատիպ գրադարանների ուղիները եւ հասցեները.

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 ուղին / to / program

Արդյունքը նման է հետեւյալին.

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)

Կարեւորը ` երբեք հրամանը չգործարկեք վստահելի ծրագրի դեմ, քանի որ հրամանը կարող է իրականացնել այն: Սա ավելի անվտանգ տարբերակ է, որը ցույց է տալիս ուղղակի կախվածությունը եւ ոչ թե ամբողջ կախվածությունը ծառից. Objdump -p / path / to / program | grep NEEDED- ը :

Ինչպես գտնել ուղին դեպի ուղին

Դուք պետք է ապահովեք ամբողջական ուղին դիմումի համար, եթե ցանկանում եք գտնել իր կախվածությունը ldd- ով, որը կարող եք անել մի շարք ուղիներ:

Օրինակ, այսպիսին է, թե ինչպես եք գտնել Firefox- ի ուղին.

գտնել / - firefox անունը

Խնդիրն այն է, որ գտնել հրամանատարությունը , այնուամենայնիվ, ոչ միայն կգործի executable- ի, այլեւ ամենուր, որ Firefox- ը տեղակայված է, ինչպես այսպես.

Այս մոտեցումը մի քիչ overkill, եւ դուք պետք է օգտագործեք sudo հրամանը բարձրացնելու ձեր արտոնությունները, եթե դուք, ամենայն հավանականությամբ, շատ թույլտվություն ստանալու հերքված սխալները:

Դրա փոխարեն, շատ ավելի հեշտ է օգտագործել այն հրամանը , որը կարող է կիրառել հայտի ուղին:

որտեղ 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++.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 անունը գրադարանի անունն է եւ hex համարը այն հասցեն է, որտեղ գրադարանը կտեղադրվի հիշողության մեջ:

Դուք նկատում եք մյուս գծերի շատերը, որ => խորհրդանիշը հաջորդում է ուղին: Սա ֆիզիկական երկուական ուղին է. hex համարը այն հասցեն է, որտեղ գրադարանը կբեռնվի: