Გამოყენება "ldd" ბრძანება Linux- ში

Ldd ბრძანება შეიძლება გამოყენებულ იქნას, რათა გაჩვენოთ გაზიარებული ბიბლიოთეკები, რომლებიც საჭიროა ნებისმიერი პროგრამით.

ეს სასარგებლოა, როდესაც არსებობს დაკარგული დამოკიდებულება და შეიძლება გამოყენებულ იქნას დაკარგული ფუნქციებისა და ობიექტების სიაში.

ldd Command სინტაქსი

ეს არის სათანადო სინტაქსი, როდესაც გამოიყენება ldd ბრძანება:

ldd [OPTION] ... ფაილი ...

აქ არის შესაძლებელი ldd ბრძანება კონცენტრატორები, რომელიც შეიძლება ჩასმული შევიდა [OPTION] ადგილზე ზემოთ ბრძანება:

--help ბეჭდვა ეს დახმარება და გასვლა - ვერსიის ბეჭდვითი ვერსია ინფორმაცია და გასასვლელი - data-relocs პროცესის მონაცემების გადანაწილება -r, - ფუნქცია-გადადიხართ პროცესის მონაცემები და ფუნქცია გადაადგილების -u, --unused ბეჭდვითი გამოუყენებელი პირდაპირი dependencies -v, --verbose ბეჭდვა ყველა ინფორმაცია

როგორ გამოვიყენოთ ld ბრძანება

თქვენ შეგიძლიათ გამოიყენოთ შემდეგი ბრძანება დამატებითი ინფორმაცია ნებისმიერი 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 path / to / პროგრამა

გამონაკლისი ასეთია:

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 საჭიროა .

როგორ მოვძებნოთ გზა განაცხადისთვის

თქვენ უნდა მიაწოდოთ სრული გზავნილის პროგრამა, თუ გსურთ მისი დამოკიდებულებების პოვნა ldd- სთან ერთად, რომელიც შეგიძლიათ გააკეთოთ რიგი გზები.

მაგალითად, ეს არის ის, თუ როგორ გსურთ იპოვოთ გზა Firefox- ზე :

მოვძებნოთ / -name firefox

პრობლემა ბრძანებასთან ერთად არის ის, რომ ის არა მარტო შეასრულებს შესრულებას, არამედ ყველგან, რომ 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 ნომერი არის მისამართი, სადაც ბიბლიოთეკა დატვირთული იქნება.