להשתמש ב Ldd הפקודה להציג את הספריות המשותפות הנדרשות על ידי כל תוכנית נתון - שימושי עבור עבודה כאשר יש תלות חסרה. הפקודה מפרטת גם פונקציות וחפצים חסרים.
ld הפקודה תחביר
שים לב לתחביר הנכון עבור הפקודה ldd כדי למנוע שגיאות:
ldd OPTION … קובץ …
השתמש באחד או יותר מהמתגים הזמינים של הפקודה ldd, שמוכנסים לתוך OPTION נקודה בפקודה הנ"ל: - הדפס את העזרה והיציאה - פרטי גרסת הדפסה ויציאה -d, - data-relocs תהליך העברת נתונים -R, - פונקציה-רלוקס נתוני תהליך ו relocations פונקציה -u, --unused | - תלות ישירה שאינה בשימוש -v, --verbose | הדפס את כל המידע בצע את הפקודה הבאה כדי לקבל מידע נוסף על תוכנית: $ ldd -v / נתיב / אל / תוכנית / הפעלה
הפלט מציג את פרטי הגירסה, כמו גם את הנתיבים והכתובות לספריות המשותפות, כך: $ 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 / לתוכנית /
התפוקה דומה לזו הבאה: 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 כנגד תוכנית לא מהימנה, מכיוון שה- 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 הוא שם הספריה ומספר הקסדצימלי הוא הכתובת שבה הספרייה תוטען בזיכרון. תוכל להבחין ברבים מהקווים האחרים כי הסמל => מופיע על ידי נתיב. זהו הנתיב לבינארי הפיזי; מספר הקסדצימלי הוא הכתובת שבה יטען הספריה. כיצד להשתמש בפקודה ldd
כיצד למצוא את הנתיב ליישום