באמצעות הפקודה "Ldd" ב- Linux

ניתן להשתמש בפקודה ldd כדי להציג בפניך את הספריות המשותפות הנדרשות על-ידי תוכנית כלשהי.

זה שימושי עבור עבודה כאשר יש תלות חסרה והוא יכול לשמש רשימת פונקציות וחסרים.

ld הפקודה תחביר

זהו התחביר הנכון בעת ​​שימוש בפקודה ldd:

ldd [OPTION] ... קובץ ...

להלן בוררי הפקודה הזמינים של ldd שניתן להכניס לתוך הנקודה [OPTION] בפקודה הנ"ל:

--help להדפיס עזרה זו ולצאת - גרסה להדפסה גרסת מידע ויציאה -D, -data-relocs תהליך העברת נתונים -R, --function-relocs תהליך נתונים ו relocations תפקוד -u, - unused להדפיס תלויות ישירות שאינם בשימוש -v, --verbose להדפיס את כל המידע

כיצד להשתמש בפקודה ldd

באפשרותך להשתמש בפקודה הבאה כדי לקבל מידע נוסף מכל פקודת ldd:

ldd -v / נתיב / אל / תוכנית / הפעלה

הפלט מציג את פרטי הגירסה, כמו גם את הנתיבים והכתובות לספריות המשותפות, כך:

(0x00007ff1d8000) libc.so.6 => / lib / libc.so.6 0x00007ff1df55a000) /lib64/ld-linux-x86-64.so.2 (0x00007ff1dfafe000)

אם קובץ SO אינו קיים כלל, תוכל למצוא את הספריות החסרות באמצעות הפקודה הבאה:

ld -d נתיב / לתוכנית /

התפוקה דומה לזו הבאה:

(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 :

למצוא /

הבעיה עם הפקודה Find , עם זאת, היא שזה לא רק רשימת ההפעלה אבל בכל מקום כי אתר נמצא, ככה:

גישה זו היא קצת מוגזם, ייתכן שיהיה עליך להשתמש בפקודה sudo כדי להעלות את ההרשאות שלך, אחר אתה צפוי לקבל המון הרשאות הכחיש.

במקום הרבה יותר קל להשתמש בפקודה whereis כדי למצוא נתיב של יישום:

איפה

הפעם הפלט עשוי להיראות כך:

/ 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 הוא שם הספריה ומספר הקסדצימלי הוא הכתובת שבה יטען הספריה בזיכרון.

תוכל להבחין ברבים מהקווים האחרים כי הסמל => מופיע על ידי נתיב. זהו הנתיב לבינארי הפיזי; מספר הקסדצימלי הוא הכתובת שבה יטען הספריה.