30-08-2016, 09:50
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
אני משער שזה תלוי שפה ו/או סביבת IDE (אני למשל עושה פעולה אחת - מקמפל [אבל בפועל קורים שם שני דברים - יצירה של object files ואז linking). אם הייתי צריך להמר אז אולי generate רק מייצר את ה object code... אם תגיד מה הסביבה או שמישהו מזהה, אולי ידע לענות יותר בוודאות.
מה זה object file? זהו קוד מכונה שהמעבד יכול להריץ, אם כי לרוב לא ניתן להריצו ישירות (אלא באמצעות loader כלשהו). גם ספריה שאתה מאנקלד בתוך הקוד שלך, אתה בעצם מאנקלד אותו דבר.
לרוב, באמצעות linking עם קוד אחר (למשל: ה Library C) ניתן ליצור קובץ בר הרצה באופן ישיר. בלינוקס אתה יכול להשתמש בפקודה ldd על קובץ בר ביצוע ולראות באיזה ספריות הוא משתמש (בהנחה והוא לא מקומפל סטטית). חשוב לציין ש ldd במקומות מסויימים מריץ את התוכנה בפועל כדי להחזיר את המידע הזה. אם הבינארי שבו מדובר הוא של תוכנה שלא בוטחים בה, עדיף להשתמש במקום זה ב: objdump -p /path/to/program | grep NEEDED אבל לקחת בחשבון שזה מציג רק מה שמלונקג' באופן ישיר, וזה לא מראה תלויות באופן רקורסיבי כמו ldd (ככה שצריך לעשות את זה ידנית אם רוצים...)
|