Linux nm Command

Linux Nm Command



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

לפי דף האיש שלו, הפקודה 'nm' משמשת ל'רשימת הסמלים מקבצי האובייקטים'. אותה פקודה פועלת גם עם קבצי הפעלה, ואנו נדון בה בפירוט במהלך היום







הבנת פקודת Linux Nm באמצעות דוגמאות שונות

הפקודה 'nm' אינה מותקנת מראש בחלק מההפצות של לינוקס. נסה לבדוק את הגרסה שלו עם הפקודה הבאה כדי לראות אם הוא מותקן:



$ נ'מ --גִרְסָה



אם אתה מקבל פלט דומה לזה שבהמשך, זה אומר ש'nm' אינו מותקן:





אז, התקן אותו באמצעות 'apt' עם הפקודה הבאה. הקפד לאשר את הפעולה על ידי הקשה על 'y' כאשר תתבקש:

$ סודו מַתְאִים להתקין binutils



כעת תוכל לוודא ש-'nm' זמין במערכת שלך על ידי בדיקת הגרסה שלו שוב.

כעת, התקנת בהצלחה את 'nm' במערכת הלינוקס שלך. הדבר הבא הוא ללמוד כיצד להשתמש בו כדי לקבל מידע לגבי קבצי אובייקט היעד שלך.

דוגמה 1: הפעלת הפקודה Nm

עם 'nm', כאשר אתה מבצע אותה, הפקודה מחפשת קובץ בשם 'a.out' שהוא קובץ אובייקט בר הפעלה. אם נמצא, הוא מציג את הסמלים הכלולים.

$ נ'מ

עם זאת, אם אין לך קובץ כזה בספרייה הנוכחית, תקבל פלט כפי שמוצג בתמונה הבאה:

בואו ניצור קובץ C++ ולאחר מכן נרכיב אותו באמצעות g++. כשאנחנו עושים זאת, אנחנו מקבלים קובץ 'a.out' שנוכל להשתמש בו עם הפקודה 'nm'.

אם נפעיל מחדש את הפקודה 'nm', שימו לב שנקבל פלט שמציג את כל הסמלים בקובץ האובייקטים שלנו. כך פועלות הפקודות 'nm'.

דוגמה 2: הצגת סמלים ספציפיים

אפשר למצוא סמל מסוים בקובץ האובייקטים שלך. אם יש לך רק קובץ אובייקט אחד, כמו במקרה שלנו, ואתה רוצה למצוא את הסמל 'ראשי', הפעל את הפקודה שלך באופן הבא:

$ נ'מ א.אאוט | אחיזה רָאשִׁי

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

$ נ'מ * .הַחוּצָה | אחיזה רָאשִׁי

דוגמה 3: הצג את הסמלים הלא מוגדרים

עם אפשרות '-u', אפשר לקבל רק את הסמלים הלא מוגדרים בקובץ האובייקטים שלך. הנה דוגמה שבה אנו מוסיפים את האפשרות '-u' בעת הפעלת הפקודה:

$ נ'מ א.אאוט

שימו לב שהפלט שאנו מקבלים קטן יותר וזה בגלל שלא כל הסמלים מוצגים, רק הסמלים הלא מוגדרים.

דוגמה 4: הצג את הגודל של סמל

ניתן לחפש סמל מסוים ולהציג את גודלו. לשם כך, השתמש באפשרות '-s'. בואו נחפש את האובייקט 'אבי' במקרה שלנו ונראה מה נקבל.

$ נ'מ | אחיזה אבי

רק הסמלים התואמים לקריטריוני החיפוש שלך מוצגים וגודלם.

דוגמה 5: קבל את הסמלים הדינמיים

האפשרות '-D' מציינת שרק הסמלים הדינמיים צריכים להיות מוצגים בפלט. בתמונה הבאה, אנו יכולים לראות שלאחר הוספת '-D', הפלט שלנו מצטמצם מכיוון שרק הסמלים הדינמיים מודפסים:

דוגמה 6: שינוי פורמט הפלט

פורמט הפלט המוגדר כברירת מחדל המשמש את 'nm' הוא 'bsd'. עם זאת, אתה יכול לציין פורמט אחר באמצעות האפשרות '-f'. לדוגמה, אם ברצוננו להשתמש בפורמט posix, הפעל את הפקודה 'nm' שלנו באופן הבא:

$ נ'מ posix a.out

דוגמה 7: עבודה עם קובץ

במקום לציין כל אפשרות שבה ברצונך להשתמש עם הפקודה 'nm' בטרמינל, אתה יכול להשתמש בקובץ. הקובץ מכיל את האפשרויות, ואתה מוסיף את הקובץ בעת ביצוע הפקודה 'nm'. הפקודה בודקת את כל האפשרויות בקובץ ומבצעת את הפעולה הדרושה.

הנה דוגמה לקובץ שהוא 'file1' המכיל את האפשרות '-g -size-sort'.

כדי להפנות לקובץ, הפעל את הפקודה כפי שמוצג להלן:

$ נ'מ @ קובץ 1

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

סיכום

הפקודה 'nm' מאפשרת למשתמשים לעבוד עם סמלים. אתה יכול להשתמש בפקודה כדי להציג את כל הסמלים בקובץ הפעלה או אובייקט. פוסט זה הסביר על הפקודה 'nm'. חוץ מזה, סיפקנו דוגמאות שונות כדי להבטיח שתרגיש נוח להשתמש בפקודה. יש לקוות שהפקודה 'nm' ברורה כעת.