פיקוד לינוקס / יוניקס: Id

שֵׁם

ld - שימוש ב- LD , קישור גנו

תַקצִיר

ld [ options ] objfile ...

תיאור

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

ld מקבלת קובצי פקודות של קובצי פקודות שנכתבים ב - superset של תחביר Link & T של Link Language Command Language, כדי לספק שליטה מפורשת ושליטה מלאה על תהליך הקישור.

דף האיש הזה אינו מתאר את שפת הפקודה; לראות את הערך ld ב "מידע", או את ld ידני: מקשר גנו , לפרטים מלאים על שפת הפקודה ועל היבטים אחרים של המקשר GNU.

גרסה זו של ld משתמשת בספריות BFD למטרות כלליות כדי לפעול על קבצי אובייקטים. זה מאפשר לד לקרוא, לשלב, ולכתוב קבצי אובייקטים בפורמטים שונים רבים --- לדוגמה, COFF או "a.out". פורמטים שונים עשויים להיות מקושרים יחד כדי לייצר כל סוג זמין של קובץ אובייקט.

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

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

אפשרויות

המקשר תומך בשפע של אפשרויות שורת הפקודה , אבל בפועל בפועל כמה מהם משמשים בהקשר מסוים. לדוגמה, שימוש תכוף ב- ld הוא לקשר קובצי אובייקטים סטנדרטיים של Unix במערכת Unix סטנדרטית ונתמכת. על מערכת כזו, כדי לקשר קובץ "hello.o":

ld -o /lib/crt0.o hello.o -lc

זה אומר LD לייצר קובץ שנקרא פלט כתוצאה מקישור הקובץ "/lib/crt0.o" עם "hello.o" ואת הספרייה "libc.a", אשר יבוא מתוך ספריות החיפוש הרגיל. (ראה דיון באופציה -L להלן).

חלק מאפשרויות שורת הפקודה לד ניתן לציין בכל נקודה בשורת הפקודה. עם זאת, אפשרויות המתייחסות לקבצים, כגון -l או -T , גורמים לקריאת הקובץ בנקודה שבה מופיעה האפשרות בשורת הפקודה, יחסית לקובצי האובייקטים ולאפשרויות קובץ אחרות. לחזרה על אפשרויות שאינן קבצים עם ארגומנט אחר לא תהיה כל השפעה נוספת, או לעקוף התרחשויות קודמות (אלה בצד שמאל יותר בשורת הפקודה) של אפשרות זו. אפשרויות המפורטות באופן משמעותי יותר מפעם אחת מצוינות בתיאורים שלהלן.

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

בדרך כלל המקשר מופעל עם קובץ אובייקט אחד לפחות, אך ניתן לציין צורות אחרות של קבצי קלט בינאריים באמצעות -l , -R ושפת הפקודה script. אם לא קובעים קבצי קלט בינאריים בכלל, המקשר אינו מייצר פלט כלשהו, ​​ומנפיק את ההודעה אין קבצי קלט .

אם הקישור אינו יכול לזהות את הפורמט של קובץ אובייקט, הוא יניח שהוא סקריפט של מקשר. סקריפט שצוין בדרך זו מגדיל את סקריפט הקישורים הראשי המשמש לקישור (או את סקריפט המקשר המשמש כברירת מחדל או את זה שצוין באמצעות -T ). תכונה זו מאפשרת לקשר לקשר כנגד קובץ שנמצא כאובייקט או כארכיון, אך למעשה מגדיר רק כמה ערכי סמל, או משתמש ב- "INPUT" או "GROUP" כדי לטעון אובייקטים אחרים. שים לב לציין את התסריט בדרך זו רק augments הראשי סקריפט המקשר; השתמש באפשרות -T להחליף את סקריפט ברירת המחדל של המקשר לחלוטין.

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

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

יש להפריד בין ארגומנטים לאפשרויות מרובות אותיות לבין שם האופציה באמצעות סימן שווה, או להינתן כארגומנטים נפרדים מיד לאחר האפשרות המחייבת אותם. לדוגמה, סימן-סימן-סיסמה foo ו- trace-symbol = foo שווים. קיצורים ייחודיים של שמות של אפשרויות מרובות אותיות מתקבלים.

הערה - אם המקשר מופעל באופן עקיף, באמצעות מנהל מהדר (לדוגמה, GCC ), כל האפשרויות של שורת הפקודה של המקשר צריכות להיות מוגדרות מראש על ידי -Wl (או כל מה שמתאים לנהג המהדר המסוים) כך:

GCC -Wl, - startgroup foo.o bar.o -Wl, - endgroup

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

הנה טבלה של בוררי שורת הפקודה הגנרית המקובלים על ידי מקשר גנו:

- מילת מפתח

אפשרות זו נתמכת עבור תאימות HP / UX. ארגומנט מילת המפתח חייב להיות אחד מארכיון המיתרים , משותף או ברירת מחדל . - ארצ'יב הוא שווה ערך מבחינה תפקודית ל - Bstatic , ושתי מילות המפתח האחרות הן שוות ערך פונקציונליות ל - BDD . ניתן להשתמש באפשרות זו מספר פעמים.

- ארכיטקטורה

- אדריכלות אדריכלות =

במהדורה הנוכחית של ld , אפשרות זו שימושית רק עבור משפחת ארכיטקטורות Intel 960. בתצורת LD זו , ארגומנטיקת הארכיטקטורה מזהה את הארכיטקטורה הספציפית במשפחה 960, ומאפשרת מספר אמצעי הגנה ושינוי נתיב החיפוש של הספרייה הארכיון.

מהדורות עתידיות של ld יכולות לתמוך בפונקציונליות דומה עבור משפחות ארכיטקטורה אחרות.

-B קלט קלט

- פורמט = קלט בפורמט

ld יכול להיות מוגדר לתמוך יותר מסוג אחד של קובץ אובייקט. אם תצורת ה- ld שלך מוגדרת בדרך זו, באפשרותך להשתמש באפשרות -b כדי לציין את התבנית הבינארית לקובצי אובייקט קלט הבאים לפי אפשרות זו בשורת הפקודה. גם כאשר ld מוגדר לתמוך בפורמטים אובייקטים חלופיים, אתה בדרך כלל לא צריך לציין את זה, כמו ld צריך להיות מוגדר לצפות כפורמט קלט ברירת המחדל הפורמט הרגיל ביותר על כל מחשב. תבנית קלט היא מחרוזת טקסט, שם של פורמט מסוים הנתמך על ידי ספריות BFD. (ניתן לציין את הפורמטים הבינאריים הזמינים עם objdump -i .)

ייתכן שתרצה להשתמש באפשרות זו אם אתה מקשר קבצים עם פורמט בינארי יוצא דופן. ניתן גם להשתמש ב- b כדי להחליף פורמטים במפורש (בעת קישור קובצי אובייקטים בפורמטים שונים), על-ידי הכללת -B קלט בפורמט לפני כל קבוצה של קובצי אובייקטים בפורמט מסוים.

פורמט ברירת המחדל נלקח ממשתנה הסביבה "GNUTARGET".

ניתן גם להגדיר את תבנית קלט מתוך סקריפט, באמצעות הפקודה "יעד";

-c MRI-commandfile

- mri-script = MRI-commandfile

עבור תאימות עם מקשרים המיוצרים על ידי MRI, ld מקבל קבצי Script שנכתבו בשפת פקודה חלופית, מוגבלת, המתוארת בסעיף MRI Compatible Files Files של תיעוד GNU ld. הצגת קבצי Script של MRI עם האפשרות -c ; השתמש באפשרות -T להפעיל סקריפטים מקושר כתוב בשפה הכללית ld scripting מטרה. אם MRI-cmdfile אינו קיים, ld מחפש אותו בספריות שצוינו על-ידי כל אפשרויות -L .

ד

-זֶרֶם יָשָׁר

-dp

שלוש האפשרויות הן שוות ערך; מספר צורות נתמכות עבור תאימות עם קישורים אחרים. הם להקצות שטח סמלים משותפים גם אם קובץ הפלט relocatable צוין (עם -R ). פקודת Script "FORCE_COMMON_ALLOCATION" יש את אותו אפקט.

הכניסה

- entry = רשומה

השתמש בערך כסימן מפורש לתחילת ביצוע התוכנית, במקום בנקודת הכניסה המוגדרת כברירת מחדל. אם אין סמל בשם ערך , המקשר ינסה לנתח את הערך כמספר, ולהשתמש בו ככתובת הכניסה (המספר יפורש בבסיס 10, תוכל להשתמש ב- 0x מובילים עבור בסיס 16 או 0 מובילים עבור בסיס 8).

-E

- יצוא-דינמי

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

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

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

ניתן גם להשתמש בסקריפט הגרסאות כדי לקבוע אילו סמלים יש להוסיף לטבלת הסמלים הדינמיים אם פורמט הפלט תומך בה. עיין בתיאור של --version script ב- @ ref {VERSION}.

-EB

קישור אובייקטים גדולים endian. הדבר משפיע על תבנית הפלט המוגדרת כברירת מחדל.

-EL

קישור אובייקטים מעט endian. הדבר משפיע על תבנית הפלט המוגדרת כברירת מחדל.

-f

שם מלא

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

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

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

-F שם

- שם סינון

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

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

חלק מהמפרסמים המבוגרים יותר השתמשו באפשרות -F בכל כלי יצירה של קומפילציה עבור ציון פורמט קובץ אובייקט לקובצי אובייקט קלט ופלט. קישור ה- GNU משתמש במנגנונים אחרים למטרה זו: האפשרויות b , --format , --formform , הפקודה "TARGET" בתסריטים של מקושרים ומשתנה הסביבה "GNUTARGET". קישור ה- GNU יתעלם מהאפשרות -F בעת יצירת אובייקט משותף של ELF.

- שם פיני

בעת יצירת אובייקט הפעלה או אובייקט משותף של ELF, התקשר אל NAME כאשר אובייקט ההפעלה או האובייקט המשותף נפרק, על ידי הגדרת DT_FINI לכתובת של הפונקציה. כברירת מחדל, המקשר משתמש ב- "_fini" כפונקציה להתקשרות.

-g

התעלם. מסופק על תאימות עם כלים אחרים.

-G ערך

--gpsize = value

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

-שם

שם-שם = שם

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

-אני

בצע קישור מצטבר (כמו אפשרות - r ).

שם פרטי

בעת יצירת אובייקט הפעלה או אובייקט משותף של ELF, התקשר אל NAME כאשר אובייקט ההפעלה או האובייקט המשותף נטען, על ידי הגדרת DT_INIT לכתובת של הפונקציה. כברירת מחדל, המקשר משתמש ב- "_init" כפונקציה להתקשרות.

- ארכיון

--library = ארכיון

הוסף ארכיון קובץ ארכיון לרשימת הקבצים לקשר. ניתן להשתמש באפשרות זו מספר פעמים. ld יחפש את רשימת הנתיבים שלו עבור המופעים של "libarchive.a" עבור כל ארכיון שצוין.

במערכות התומכות בספריות משותפות, ld עשוי גם לחפש ספריות עם הרחבות שאינן "a". באופן ספציפי, במערכות ELF ו- SunOS, ld יחפש ספריה עבור ספריה עם סיומת של ".so" לפני שתחפש אחת עם סיומת של .a. לפי האמנה, סיומת ".so" מציינת ספריה משותפת.

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

ראה - ( אפשרות דרך להכריח את המקשר לחפש ארכיונים מספר פעמים.

תוכל לרשום את אותו ארכיון מספר פעמים בשורת הפקודה.

זה סוג של חיפוש בארכיון הוא תקן עבור יוניקס מקשרים. עם זאת, אם אתה משתמש ב LD ב - AIX, שים לב כי זה שונה מהתנהגות של מקשר AIX.

-L searchdir

--library-path = searchdir

הוסף searchdir נתיב לרשימת הנתיבים ש- ld יחפש ספריות ארכיון וסקריפטים של בקרת LD . תוכל להשתמש באפשרות זו מספר פעמים. הספריות נבדקות בסדר שבו הן מוגדרות בשורת הפקודה. ספריות המופיעות בשורת הפקודה נבדקות לפני ספריות ברירת המחדל. All -L האפשרויות חלות על כל האפשרויות, ללא קשר לסדר שבו מופיעות האפשרויות.

אם searchdir מתחיל עם "=", ואז "=" יוחלף על ידי הקידומת sysroot , נתיב שצוין כאשר הקונפיגורציה מוגדרת.

ברירת המחדל של נתיבים שנבדקו (ללא ציון עם -L ) תלויה באיזה מצב אמולציה ld הוא משתמש, ובמקרים מסוימים גם על אופן ההגדרה שלו.

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

- אמולציה

לחקות את מקשר אמולציה . ניתן לרשום את ההדמיות הזמינות עם האפשרויות --verbose או -V .

אם לא נעשה שימוש באפשרות -m , הדמייה נלקחת ממשתנה הסביבה "LDEMULATION", אם הוא מוגדר.

אחרת, אמולציית ברירת המחדל תלויה באופן הגדרת הקונפיגורציה.

-M

- מפת הדפסה

הדפס מפת קישור לפלט הסטנדרטי. מפת קישורים מספקת מידע על הקישור, כולל:

*

כאשר קובצי אובייקטים וסמלים ממופים לזיכרון.

*

כמה נפוצים הסמלים.

*

כל חברי הארכיון נכללו בקישור, עם אזכור של הסמל שגרם לחבר הארכיון להיות מובא.

-n

- nmagic

כבה את יישור הדף של הסעיפים, וסמן את הפלט כ- "NMAGIC" במידת האפשר.

-N

-

הגדר את קטעי הטקסט והנתונים לקריאה וכתיבה. כמו כן, אל תיישר את מקטע הנתונים, והשבית קישור מול ספריות משותפות. אם תבנית הפלט תומכת במספרים הקסומים של Unix, סמן את הפלט כ- "OMAGIC".

- לא-אומאגי

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

פלט -O

- יציאה = פלט

השתמש בפלט כשם עבור התוכנית המיוצרת על ידי ld ; אם אפשרות זו אינה מצוינת, השם a.out משמש כברירת מחדל. הפקודה Script "OUTPUT" יכולה גם לציין את שם קובץ הפלט.

-O רמה

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

-q

- emit-relocs

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

אפשרות זו נתמכת בשלב זה בפלטפורמות ELF בלבד.

-r

- ניתן לקשר

יצירת פלט relocatable --- כלומר, ליצור קובץ פלט שיכול בתורו לשמש קלט לד . לעתים קרובות זה נקרא קישור חלקי . כתופעת לוואי, בסביבות התומכות במספרי הקסם של Unix, אפשרות זו קובעת גם את מספר הקסם של קובץ הפלט ל- "OMAGIC". אם אפשרות זו לא צוינה, נוצר קובץ מוחלט. בעת קישור בין תוכניות C + +, אפשרות זו לא תפתור הפניות לבונים; כדי לעשות זאת, להשתמש -.

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

אפשרות זו עושה את אותו הדבר כמו - i .

-R שם קובץ

- just-symbol = שם קובץ

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

עבור תאימות עם מקושרים אחרים של ELF, אם האפשרות -R מופיעה על-ידי שם ספריה, במקום שם קובץ, היא מטופלת כאפשרות rpath .

- s

- להפיל הכל

השמט את כל פרטי הסמלים מקובץ הפלט.

-S

-

השמיט מידע סמל הבאגים (אך לא את כל הסמלים) מקובץ הפלט.

-t

--זֵכֶר

הדפס את השמות של קבצי הקלט כפי ld תהליכים אותם.

-T scriptfile

--script = scriptfile

השתמש scriptfile כמו סקריפט מקשר. סקריפט זה מחליף LD ברירת המחדל של סקריפט המקשר (במקום להוסיף אותו), ולכן הפקודה חייבת לציין את כל הדרוש כדי לתאר את קובץ הפלט. אם scriptfile אינו קיים בספריה הנוכחית, "ld" מחפש אותו בספריות שצוינו על-ידי אפשרויות קודמות. Multi -T אפשרויות מצטברים.

סמל

- מוגדר מראש = סמל

סמל כוח להיות מוזן בקובץ הפלט כסמל לא מוגדר. פעולה זו עשויה, למשל, לגרום לקישור של מודולים נוספים מספריות רגילות. ניתן לחזור עם טיעונים אפשריים שונים כדי להזין סמלים לא מוגדרים נוספים. אפשרות זו מקבילה לפקודת ה- Script של "EXTERN".

ללא שם: Ur

עבור כל דבר אחר מאשר C + תוכניות, אפשרות זו היא שווה ל - r : זה מייצר פלט relocatable --- כלומר, קובץ פלט שיכול בתורו לשמש קלט לד . בעת קישור C + תוכניות, - או האם עושה הפניות לפתרון בוני, שלא כמו - ר. זה לא עובד כדי להשתמש, על קבצים שהיו עצמם מקושרים עם - UR ; לאחר בניית הטבלה, לא ניתן להוסיף אותה. השתמש ב- URL רק עבור הקישור החלקי האחרון, ו- r - עבור האחרים.

- ייחודי [= SECTION ]

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

-v

--גִרְסָה

-V

הצגת מספר הגרסה עבור ld . האפשרות -V גם מפרטת את ההדמיות הנתמכות.

-איקס

- מבט לכל

מחק את כל הסמלים המקומיים.

-איקס

- מקומיים

מחק את כל הסמלים המקומיים הזמניים. עבור רוב המטרות, זה כל הסמלים המקומיים ששמותיהם מתחילים עם L.

סמל

- סמל סימן = = סמל

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

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

נתיב

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

מילת מפתח

מילות המפתח המוכרות הן "initfirst", "intersptr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "עכשיו", "מקור", "combreloc", "nocombreloc" ו "nocopyreloc ". מילות המפתח האחרות מתעלמות מהתאימות של Solaris. "initfirst" מסמן את האובייקט להיות מאותחל תחילה בזמן ריצה לפני כל אובייקט אחר. "interpose" מסמן את האובייקט שבו טבלת הסימניות שלו מתערבת לפני כל הסמלים, אך את קובץ ההפעלה הראשי. "loadfltr" מסמן את האובייקט שהעיבודים שלו מעובדים מיידית בזמן הריצה. nodefaultlib מסמן את האובייקט שהחיפוש אחר תלות של אובייקט זה יתעלם כל נתיבי החיפוש ספריה ברירת המחדל - -. "nodelete" מסמן את האובייקט לא צריך לפרוק בזמן ריצה. "nodlopen" מסמן את האובייקט לא זמין "dlopen". "nodump" מסמן את האובייקט לא יכול להיות זרקו על ידי "dldump". "עכשיו" מסמן את האובייקט עם מחייב ריצה לא עצלן. "מוצא" סימני האובייקט עשוי להכיל $ ORIGIN. "defs" אינו מאפשר סמלים לא מוגדרים. "muldefs" מאפשר הגדרות מרובות. "combreloc" משלב מקטעי reloc מרובים ומייחד אותם כדי להפוך את סמל דינמי למטמון בדיקת אפשרי.

"nocombreloc" משבית מספר רב של קטעי שילוב. "nocopyreloc" משבית הייצור של העותקים להעתיק.

- ( ארכיון -)

- קבוצת ארכיונים - קבוצה

הארכיון צריך להיות רשימה של קבצי ארכיון . הם עשויים להיות שמות קבצים מפורשים, או -l אפשרויות.

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

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

- לקלוט-לא ידוע-קלט-קשת

- לא לקבל-לא ידוע-קלט-קשת

אומר לקישור לקבל קבצי קלט שארכיטקטורה שלהם אינה ניתנת לזיהוי. ההנחה היא כי המשתמש יודע מה הם עושים בכוונה רוצה לקשר אלה קבצי קלט לא ידוע. זו היתה התנהגות ברירת המחדל של המקשר, לפני שחרור 2.14. התנהגות ברירת המחדל משחרור 2.14 ואילך היא לדחות קבצי קלט מסוג זה, ולכן נוספה האפשרות - ascept-unknown-input-arch כדי לשחזר את ההתנהגות הישנה.

מילת מפתח

אפשרות זו מתעלמת מהתאימות ל- SunOS .

-דינמיקה

-די

-call_shared

קישור לספריות דינמיות. זה רק משמעותי על פלטפורמות אשר ספריות משותפות נתמכים. אפשרות זו היא בדרך כלל ברירת המחדל בפלטפורמות כאלה. הגרסאות השונות של אפשרות זו הן תאימות למערכות שונות. באפשרותך להשתמש באפשרות זו מספר פעמים בשורת הפקודה: היא משפיעה על חיפוש הספריה עבור אפשרויות -l אשר עוקבות אחריה.

- קבוצה

הגדר את דגל "DF_1_GROUP" בערך "DT_FLAGS_1" בקטע הדינמי. פעולה זו גורמת למפעיל זמן הריצה לטפל בחיפושים באובייקט זה ותלותו להתבצע רק בתוך הקבוצה. - לא מוגדר לא משתמע. אפשרות זו היא בעלת משמעות רק בפלטפורמות ELF התומכות בספריות משותפות .

-בסטטית

-Dn

-Non_shared

-סטָטִי

אין לקשר בין ספריות משותפות. זה רק משמעותי על פלטפורמות אשר ספריות משותפות נתמכים. הגרסאות השונות של אפשרות זו הן תאימות למערכות שונות. באפשרותך להשתמש באפשרות זו מספר פעמים בשורת הפקודה: היא משפיעה על חיפוש הספריה עבור אפשרויות -l אשר עוקבות אחריה.

- בסימבולית

בעת יצירת ספריה משותפת, יש לכפות הפניות לסמלים גלובליים להגדרה בתוך הספריה המשותפת, אם בכלל. בדרך כלל, לתוכנית המקושרת לספרייה משותפת יש אפשרות לעקוף את ההגדרה בספריה המשותפת. אפשרות זו היא משמעותית רק על ELFplatforms התומכים בספריות משותפות.

- בדוק סעיפים

- לא לבדוק סעיפים

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

- cref

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

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

- לא להגדיר-נפוץ

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

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

- הסימן = הביטוי

צור סמל גלובלי בקובץ הפלט, המכיל את הכתובת המוחלטת שניתנה על ידי הביטוי . ניתן להשתמש באפשרות זו מספר פעמים על מנת להגדיר מספר סמלים בשורת הפקודה. צורה מוגבלת של אריתמטיקה נתמכת עבור הביטוי בהקשר זה: אתה יכול לתת קבוע הקסדצימלי או את השם של סמל קיים, או להשתמש "+" ו - "" כדי להוסיף או לחסר קבועים הקסדצימלי או סמלים. אם אתה צריך ביטויים משוכללים יותר, שקול להשתמש בשפת הפקודה של הקישורים מתוך סקריפט. הערה: לא צריך להיות רווח לבן בין הסמל , סימן השווה (' = ' ') והביטוי .

--demangle [= style ]

- לא דמונגל

אפשרויות אלה קובעות אם לשמות סמלים בדמנגל בהודעות שגיאה ובפלט אחר. כאשר המקשר מסופר לדמנגל, הוא מנסה להציג את שמות הסמלים באופן קריא: הוא מפשיט קווים תחתונים מובילים, אם הם משמשים את פורמט קובץ האובייקט וממיר שמות של C + + עם שמות קריאיים. קומפיילרים שונים יש סגנונות שונים mangling. ניתן להשתמש בארגומנט סגנון הסגנון האופציונלי לבחירת סגנון הדחה מתאים עבור המהדר שלך. המקשר יהיה demangle כברירת מחדל, אלא אם כן משתנה הסביבה COLLECT_NO_DEMANGLE מוגדר. ניתן להשתמש באפשרויות אלה כדי לעקוף את ברירת המחדל.

- קובץ דינמי מקשר

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

- ראמד

אפשרות זו היא בעלת משמעות רק בעת קישור קוד PIC מוטבע של MIPS, שנוצר על-ידי האפשרות -membedded-pic ל- Compiler ומהדר ה- GNU. זה גורם לקשר ליצור טבלה אשר ניתן להשתמש בהם בזמן ריצה כדי להעביר מחדש את הנתונים אשר אותחל באופן סטטי לערכים המצביע. עיין בקוד ב- examuite / ld-empic לקבלת פרטים.

- אזהרות קטלניות

התייחס לכל האזהרות כאל שגיאות .

- כוח exe- הסיומת

ודא שלקובץ פלט יש סיומת exe.

אם קובץ הפלט שהוקלט בהצלחה אינו מכיל סיומת " exe " או " .dll ", אפשרות זו מאלצת את המקשר להעתיק את קובץ הפלט לאותו שם עם סיומת ".exe". אפשרות זו שימושית בעת שימוש ביישומי Unix של Unix במערכת Microsoft Windows, מאחר שגירסאות מסוימות של Windows לא יפעילו תמונה אלא אם כן היא מסתיימת בסיומת .exe.

--no-gc-section

- gc-section

אפשר איסוף אשפה של קטעי קלט שאינם בשימוש. המערכת מתעלמת ממטרות שאינן תומכות באפשרות זו. אפשרות זו אינה תואמת ל- r , ואין להשתמש בה עם קישור דינמי. התנהגות ברירת המחדל (של אי ביצוע איסוף אשפה זה) ניתנת לשחזור על ידי ציון --no-gc-section בשורת הפקודה.

--עֶזרָה

הדפס סיכום של אפשרויות שורת הפקודה בפלט הסטנדרטי וביציאה.

- עזרה - עזרה

הדפס סיכום של כל אפשרויות היעד הספציפיות בפלט הסטנדרטי וביציאה.

מפת Mapfile

הדפס מפת קישורים לקובץ filefile . ראה את תיאור האפשרות -M , לעיל.

- לא לשמור על זיכרון

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

- לא מוגדר

-Z defs

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

- רב-הגדרה-מרובה

-Muldefs

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

- נמוך-לא-מוגדר-לא מוגדר

אפשר סמלים לא מוגדרים באובייקטים משותפים גם כאשר - לא מוגדר-מוגדר. התוצאה הסופית תהיה שסמלים לא מוגדרים באובייקטים רגילים עדיין יפעילו שגיאה, אך לא יתעלמו סמלים לא מוגדרים באובייקטים משותפים. יישום no_undefined עושה את ההנחה כי מקשר זמן ריצה יהיה לחנוק על סמלים לא מוגדר. עם זאת יש לפחות מערכת אחת (BeOS) שבה סמלים לא מוגדרים בספריות משותפות היא רגילה, שכן הליבה תוקנת אותם בזמן הטעינה כדי לבחור איזו פונקציה מתאימה ביותר לארכיטקטורה הנוכחית. IE באופן דינמי לבחור פונקציה memset המתאים. כנראה שזה גם נורמלי עבור ספריות משותפות HPPA יש סמלים לא מוגדר.

--no-undefined-version

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

- לא, להזהיר- mismatch

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

- לא כל-ארכיון

כבה את האפקט של האפשרות -Wole-archive עבור קובצי ארכיון הבאים.

- מעכב-exec

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

- נוסטליב

רק ספריות של ספריות חיפוש המפורטות במפורש בשורת הפקודה. ספריות ספריות שצוין סקריפטים מקשר (כולל סקריפטים מקשר שצוין בשורת הפקודה) הם התעלמו.

- פורמט פלט בפורמט

ld יכול להיות מוגדר לתמוך יותר מסוג אחד של קובץ אובייקט. אם תצורת ה- ld שלך מוגדרת כך, באפשרותך להשתמש באפשרות --formform כדי לציין את התבנית הבינארית לקובץ אובייקט הפלט. גם כאשר ld מוגדר לתמוך בפורמטים אובייקטים חלופיים, אתה בדרך כלל לא צריך לציין את זה, כמו ld צריך להיות מוגדר לייצר כפלט פלט ברירת המחדל הפורמט הרגיל ביותר על כל מחשב. output-format הוא מחרוזת טקסט, שם של פורמט מסוים הנתמך על ידי ספריות BFD. (ניתן לרשום את הפורמטים הבינאריים הזמינים עם objdump -i .) פקודת Script "OUTPUT_FORMAT" יכולה גם לציין את פורמט הפלט, אך אפשרות זו מבטלת אותו.

-קומיק

אפשרות זו מתעלמת מתאימות Linux.

-

אפשרות זו מתעלמת מהתאימות של SVR4.

--לְהִרָגַע

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

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

בפלטפורמות מסוימות, זמן הקישור הזה, האופטימיזציה הגלובלית עלולה לגרום לניקוי באגים סמלי של ההפעלה המתקבלת. זה ידוע גם במקרה של Matsushita MN10200and MN10300 משפחה של מעבדים.

בפלטפורמות שבהן הדבר אינו נתמך, - relax מתקבל, אך מתעלמות ממנו.

- שם הקובץ - סמלים - קובץ

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

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

אתה יכול רק לציין - לסמל-סמלים קובץ פעם בשורת הפקודה. זה דוחה -s ו- -S .

-רפא

הוסף ספריה אל נתיב החיפוש של ספריית זמן ריצה. זה משמש בעת קישור ELFexecutable עם אובייקטים משותפים. כל הארגומנטים -Rpath משורשרים ומועברים לקישור זמן ריצה, אשר משתמש בהם כדי לאתר אובייקטים משותפים בזמן ריצה. האפשרות -Rpath משמשת גם בעת איתור אובייקטים משותפים הנחוצים על-ידי אובייקטים משותפים הכלולים במפורש בקישור; עיין בתיאור אפשרות הקישור -Rathath . אם לא נעשה שימוש ב- rpath בעת חיבור קובץ הפעלה מסוג ELF, ייעשה שימוש במשתנה של משתנה הסביבה "LD_RUN_PATH" אם הוא מוגדר.

ניתן להשתמש באפשרות -Rpath גם ב- SunOS. כברירת מחדל, ב- SunOS, המקשר ירכיב תיקון חיפוש בזמן ריצה מכל האפשרויות -L שניתן. אם נעשה שימוש באפשרות rpath , נתיב החיפוש של זמן ריצה ייווצר באופן בלעדי באמצעות האפשרויות -rpath , תוך התעלמות מאפשרויות L. זה יכול להיות שימושי בעת שימוש ב- GCC, אשר מוסיף אפשרויות רבות -L אשר עשוי להיות על מערכות קבצים מותקן.

עבור תאימות עם מקושרים אחרים של ELF, אם האפשרות -R מופיעה על-ידי שם ספריה, במקום שם קובץ, היא מטופלת כאפשרות rpath .

-Rirath-link DIR

בעת שימוש ב- ELF או ב- SunOS, ספריה משותפת אחת עשויה לדרוש אחרת. מצב זה קורה כאשר קישור "ld-shared" כולל ספרייה משותפת כאחד מקובצי הקלט.

כאשר המקשר נתקל בתלות כזו בעת ביצוע קישור לא משותף, שאינו ניתן להעברה מחדש, הוא ינסה באופן אוטומטי לאתר את הספרייה המשותפת הנדרשת ולכלול אותה בקישור, אם היא אינה כלולה במפורש. במקרה כזה, האפשרות -Rpath-link מציינת את קבוצת הספריות הראשונה לחיפוש. אפשרות הקישור -Rpath עשויה לציין רצף של שמות ספריות על-ידי ציון רשימת שמות המופרדים על-ידי colons, או על-ידי הצגת מספר פעמים.

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

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

1.

כל הספריות שצוין על ידי אפשרויות הקישור -rpath .

2.

כל הספריות שצוין על ידי אפשרויות -Rpath . ההבדל בין -Rpath ו- rpath-link הוא כי הספריות שצוינו על-ידי אפשרויות -rpath כלולות בקובץ ההפעלה ומשמשות בזמן ריצה, ואילו האפשרות -Rpath-link יעילה רק בזמן הקישור. זה עבור מקשר דובר בלבד.

3.

במערכת ELF, אם לא נעשה שימוש באפשרויות rpath ו- rpath-link, חפש בתוכן המשתנה הסביבתי "LD_RUN_PATH". זה עבור מקשר דובר בלבד.

4.

ב- SunOS, אם לא נעשה שימוש באפשרות -rpath , חפש בספריות שצוינו באמצעות אופציות L.

5.

עבור מקשר דובר, התוכן של משתנה הסביבה "LD_LIBRARY_PATH".

6.

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

7.

ספריות ברירת המחדל, בדרך כלל / lib ו / usr / lib .

8.

עבור מקשר דובר על מערכת ELF, אם הקובץ /etc/ld.so.conf קיים, רשימת הספריות שנמצאו בקובץ זה.

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

-מְשׁוּתָף

-חפצים

צור ספריה משותפת. זה כרגע נתמך רק על ELF, XCOFF פלטפורמות SunOS. ב- SunOS, המקשר ייצור באופן אוטומטי ספריה משותפת אם האפשרות -e אינה בשימוש ויש סמלים לא מוגדרים בקישור.

--sort-common

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

- גודל לפי גודל [ גודל ]

בדומה ל - Split-by-reloc, אך יוצר קטע פלט חדש עבור כל קובץ קלט כאשר הגודל מגיע. גודל ברירת המחדל לגודל של 1 אם לא נתון.

- ספליט-לפי-רילוק [ ספירה ]

מנסה ליצור מקטעים נוספים בקובץ הפלט כך שאף מקטע פלט יחיד בקובץ לא יכלול יותר מהספירה . זה שימושי בעת יצירת קבצים ענקיים relocatable להורדה לתוך גרעינים מסוימים בזמן אמת עם פורמט קובץ אובייקט COFF; שכן COFFcannot מייצגים יותר מ 65535 relocations בחלק אחד. שים לב כי זה יכשל לעבוד עם פורמטים של אובייקט קבצים שאינם תומכים חלקים שרירותיים. המקשר לא יפצל מקטעי קלט אינדיבידואליים עבור חלוקה מחדש, כך שאם מקטע קלט אחד מכיל יותר ממספר הפניות, קטע פלט אחד יכיל שינויים רבים. ספירת ערכי ברירת המחדל לערך של 32768.

-

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

- מסורתי פורמט

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

לדוגמה, ב- SunOS, ld משלב ערכים כפולים בטבלת מחרוזות הסימנים. זה יכול להקטין את הגודל של קובץ הפלט עם מידע באגים מלא על ידי מעל 30 אחוזים. למרבה הצער, תוכנית ה- Sunboss "dbx" לא יכולה לקרוא את התוכנית המתקבלת ("gdb" אין בעיה). המתג - traditional-format אומר לד לא לשלב רשומות כפולות.

--section-start sectionname = org

אתר מקטע בקובץ הפלט בכתובת המוחלטת שמסר הארגון . אתה יכול להשתמש באפשרות זו כמה פעמים לפי הצורך לאיתור מקטעים מרובים בשורת הפקודה. org חייב להיות מספר שלם הקסדצימלי; עבור תאימות עם קישורים אחרים, אתה יכול להשמיט את 0x המובילים בדרך כלל משויך ערכים הקסדצימליים. הערה: לא צריך להיות רווח לבן בין sectionname , סימן שווה (' = ' ') ו- org .

-Tbss הארגון

-Tdata org

-Ttext org

השתמש ב- org בתור כתובת ההתחלה עבור --- בהתאמה --- "bss", "נתונים", או "טקסט" קטע של קובץ הפלט. org חייב להיות מספר שלם הקסדצימלי; עבור תאימות עם קישורים אחרים, אתה יכול להשמיט את 0x המובילים בדרך כלל משויך ערכים הקסדצימליים.

- dll-verbose

--מִלוּלִי

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

--version-script = version-scriptfile

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

- warn-common

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

ישנם שלושה סוגים של סמלים גלובליים, המתוארים כאן על ידי דוגמאות C:

int i = 1;

הגדרה, אשר נכנס בסעיף נתונים אתחול של קובץ הפלט.

החיצוני int i;

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

int i;

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

אופציה - warn-common יכולה לייצר חמישה סוגים של אזהרות. כל אזהרה מורכבת משתי שורות: הראשונה מתארת ​​את הסמל שנתקל בו, והשנייה מתארת ​​את הסמל הקודם שנתקל באותו שם. אחד משני הסמלים או שניהם יהיה סמל משותף.

1.

הפיכת סמל משותף לתוך הפניה, כי יש כבר הגדרה עבור הסמל.

(
): אזהרה: משותף של '<סמל>' על ידי הגדרה (
): אזהרה: מוגדר כאן

2.

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

(
): אזהרה: ההגדרה של < 'overriding common (
): אזהרה: common כאן

3.

מיזוג סמל משותף עם סמל משותף בגודל זהה.

(
): אזהרה: מספר משותף של '' (
): אזהרה: הנפוץ הקודם נמצא כאן

4.

מיזוג סמל משותף עם סמל משותף גדול קודם.

(
): אזהרה: משותף של '<סמל>' על ידי קובץ גדול יותר (
): אזהרה: גדול יותר נמצא כאן

5.

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

(
): אזהרה: משותף של '<סמל>' גדול יותר משותף (
): אזהרה: small common here

- בוני-רוע

הזהר אם כל בוני הגלובלי משמשים. זה שימושי רק עבור כמה פורמטים של קבצים אובייקט. עבור פורמטים כמו COFF או ELF, המקשר אינו יכול לזהות את השימוש בבנאים גלובליים.

- warn-multiple-gp

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

- פעם אחת

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

- warn-section-align

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

--Wole-archive

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

שתי הערות בעת שימוש באפשרות זו מ- GCC: ראשית, GCC אינו יודע על אפשרות זו, לכן עליך להשתמש -Wl, -Wol-archive . שנית, אל תשכחו להשתמש -Wl, -no-whole-archive אחרי רשימת הארכיונים שלכם, מכיוון ש- GCC יוסיף רשימת ארכיונים משלכם לקישור שלכם, וייתכן שלא תרצו שהדגל ישפיע גם על אלה.

- סמל

השתמש בפונקציה מעטפת עבור סמל . כל התייחסות לא מוגדרת לסמל תיפתר ל "___ wrap_symbol". כל התייחסות לא מוגדרת ל "___ ___" תיפתר לסמל .

זה יכול לשמש כדי לספק מעטפת עבור פונקציית מערכת. הפונקציה עטיפה צריך להיקרא "__wrap_symbol". אם הוא רוצה לקרוא את פונקציית המערכת, הוא צריך לקרוא "___ realymb".

הנה דוגמה טריוויאלית:

חלל * __wrap_malloc (int c) {printf ("malloc נקרא עם% ld \ n", c); החזר __real_malloc (c); }

אם אתה מקשר קוד אחר עם קובץ זה באמצעות - wrap malloc , אז כל השיחות "malloc" תקרא את הפונקציה "__wrap_malloc" במקום. הקריאה אל "__real_malloc" ב "__wrap_malloc" תקרא לפונקציה האמיתית "malloc".

ייתכן שתרצה לספק פונקציה "__real_malloc" גם כן, כך קישורים ללא אפשרות - swrap תצליח. אם אתה עושה את זה, אתה לא צריך לשים את ההגדרה של "___ real_malloc" באותו קובץ כמו "__wrap_malloc"; אם תעשה זאת, המאסף עשוי לפתור את השיחה לפני שמקשר יש סיכוי לעטוף אותו "מאלוק".

--enable-dtags

- disable-new-dtags

קישור זה יכול ליצור את התגים הדינמיים החדשים ב- ELF. אבל מערכות ה- ELF הישנות יותר לא יכולות להבין אותן. אם תציין --enable-dtags , תגים דינמיים ייווצרו לפי הצורך. אם תציין - dtags -disable-new , לא תיווצר תגים דינמיים חדשים. כברירת מחדל, התגים הדינמיים החדשים אינם נוצרים. שים לב שאפשרויות אלה זמינות עבור מערכות ELEL בלבד.

ה- i386 PE מקשר תומך באפשרות -shared , מה שגורם לפלט להיות ספריה מקושרת באופן דינמי (DLL) במקום הפעלה רגילה. אתה צריך שם את הפלט "*. Dll" בעת שימוש באפשרות זו. בנוסף, המקשר תומך באופן מלא בקבצי "* .def" הסטנדרטיים, אשר עשויים להיות מוגדרים על שורת הפקודה של המקשר כקובץ אובייקט (למעשה, עליו להקדים ארכיונים שהוא מייצא מהם סמלים, כדי לוודא שהם מקושרים, בדיוק כמו קובץ אובייקט רגיל).

בנוסף האפשרויות המשותפות לכל היעדים, i386 PE מקשר תמיכה אפשרויות שורת פקודה נוספת הספציפיים היעד i386 PE. ניתן להפריד בין אפשרויות הנוטלות ערכים מערכיהן על ידי רווח או סימן שווה.

--add-stdcall-alias

אם יינתנו, הסמלים עם סיומת stdcall (@ nn ) ייוצאו כמות שהם וגם עם הסיומת שהוסר.

- קובץ קובץ בסיס

השתמש בקובץ בשם של קובץ שבו יש לשמור את כתובות הבסיס של כל relocations הדרושים ליצירת קבצי DLL עם dlltool .

- dll

יצירת DLL במקום הפעלה רגילה. אתה יכול גם להשתמש -שיתוף או לציין "ספריה" בקובץ ".def" נתון.

--enable-stdcall-fixup

- disable-stdcall-fixup

אם הקישור מוצא סמל שהוא אינו יכול לפתור, הוא ינסה לעשות "קישור מטושטשת" על ידי חיפוש סמל מוגדר אחר, אשר שונה רק בפורמט של שם הסמל (cdecl לעומת stdcall) ויפתור את הסמל על ידי קישור כדי להתאים את המשחק. לדוגמה, הסמל הלא מוגדר "_foo" עשוי להיות מקושר לפונקציה "_foo @ 12", או שהסמל הלא מוגדר "_bar @ 16" עשוי להיות מקושר לפונקציה "_bar". כאשר המקשר עושה זאת, הוא מדפיס אזהרה, מכיוון שבדרך כלל זה לא היה צריך לקשר, אבל לפעמים ספריות הייבוא ​​שנוצרו מתוך קבצי DLL של צד שלישי עשויות להזדקק לתכונה זו כדי להיות שמיש. אם תציין --enable-stdcall-fixup , תכונה זו מופעלת במלואה והאזהרות לא יודפסו. אם תציין - disable-stdcall-fixup , תכונה זו מושבתת ואי-התאמות כאלה נחשבות לשגיאות.

- לייצא את כל הסמלים

אם נתון, כל הסמלים הגלובליים אובייקטים המשמשים לבניית DLL יהיה מיוצא על ידי ה- DLL. שים לב שזוהי ברירת המחדל אם אחרת לא יהיו סמלים מיוצאים. כאשר הסמלים מיוצאים במפורש באמצעות קבצי DEF או מיוצאים במרומז באמצעות תכונות פונקציה, ברירת המחדל היא לא לייצא שום דבר אחר, אלא אם כן ניתנת אפשרות זו. שים לב שהסמלים "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" ו- "impure_ptr" לא ייוצאו אוטומטית. כמו כן, סמלים המיובאים מדפי DLL אחרים לא ייוצאו מחדש, ולא יהיו סמלים המציינים את הפריסה הפנימית של DLL, כגון אלה המתחילים ב- "_head_" או מסתיימים עם "_iname". בנוסף, לא ייוצאו סמלים מתוך "libgcc", "libstd ++", "libmingw32" או "crtX.o". סמלים ששמם מתחיל עם "__rtti_" או "__builtin_" לא ייוצאו, כדי לעזור עם C + + DLLs. לבסוף, יש רשימה מקיפה של סמלים פרטיים של cygwin שאינם מיוצאים (כמובן, זה חל על בניית DLLs עבור מטרות cygwin).

אלה של cygwin-excry הם: "" _cygwin_dll_entry @ 12 "," _cygwin_crt0_common @ 8 "," cygwin_noncywin_dll_entry @ 12 "," _fmode "," _impure_ptr "," cygwin_attach_dll "," cygwin_premain0 "," cygwin_premain1 "," cygwin_premain2 "," cygwin_premain3 "ו" סביבה ".

- סמל סמלים-סמלים , סמל , ...

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

- libclude-libs lib , lib , ...

מציין רשימה של ספריות ארכיון שמהן לא ניתן לייצא את הסמלים באופן אוטומטי. שמות הספריה עשויים להיות מופרדים באמצעות פסיקים או קולונים. ציון "--exclude-libs ALL" אינו כולל סמלים בכל ספריות הארכיון מיצוא אוטומטי. סמלים המופיעים במפורש בקובץ .def עדיין מיוצאים, ללא קשר לאפשרות זו.

- יישור - יישור

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

- שומ

השמורה , להתחייב

ציין את כמות הזיכרון כדי להזמין (או לחלופין להתחייב) לשמש כערימה עבור תוכנית זו. ברירת המחדל היא 1Mb שמורה, 4K מחויבת.

- ערך בסיס

השתמש בערך ככתובת הבסיס של התוכנית או ה- DLL. זהו מיקום הזיכרון הנמוך ביותר שישמש כאשר התוכנית או ה- DLL שלך נטענים. כדי להפחית את הצורך למקם מחדש ולשפר את הביצועים של ה- DLL שלך, כל אחד צריך כתובת בסיס ייחודית ולא חפיפה dlls אחרים. ברירת המחדל היא 0x400000 עבור הרצה, ו 0x10000000 עבור dlls.

- מילוי

אם ניתן, הסיומות stdcall (@ nn ) יהיה חשוף סמלים לפני שהם מיוצאים.

--major-image-version

קובע את המספר העיקרי של 'גירסת התמונה' '. ברירות מחדל ל 1.

--mager-os-version גרסה

קובע את המספר העיקרי של 'גירסת מערכת ההפעלה' '. ברירות מחדל ל 4.

--major-subsystem-version value

קובע את המספר העיקרי של גרסת המשנה ''. ברירות מחדל ל 4.

- Minor-image-version

קובע את המספר הזעיר של גרסת התמונה ''. ברירת המחדל היא 0.

- Minor-os-version הערך

מגדיר את המספר הזעיר של 'גירסת מערכת ההפעלה' '. ברירת המחדל היא 0.

- Minor-subsystem-version

קובע את המספר הזעיר של גרסת המשנה ''. ברירת המחדל היא 0.

- קובץ יציאה-יציאה

המקשר תיצור את קובץ הקובץ אשר יכיל קובץ DEF המתאים DLL המקשר הוא יוצר. קובץ DEF זה (שאמור להיקרא "* .def") עשוי לשמש ליצירת ספריית ייבוא ​​עם "dlltool", או שניתן להשתמש בו כהפניה לסמלים המיוצאים באופן אוטומטי או במרומז.

- קובץ implib

המקשר תיצור את קובץ הקובץ אשר יכיל לייב לייב המתאים DLL המקשר הוא יוצר. לייב זה לייב (אשר צריך להיקרא "*. Dll.a" או "* .a" ניתן להשתמש כדי לקשר לקוחות נגד DLL שנוצר, התנהגות זו מאפשרת לדלג נפרד "dlltool" שלב יצירת הספרייה לייבא.

--enable-auto-base בסיס

בחר באופן אוטומטי את בסיס התמונה עבור קבצי DLL, אלא אם כן צוין באמצעות הארגומנט "--image-base". באמצעות hash שנוצר מתוך dllname ליצור בסיסי תמונה ייחודי עבור כל DLL, התנגשויות בזיכרון ו relocations אשר יכול לעכב ביצוע התוכנית נמנעים.

- disable-auto-image-base

אל תיצור באופן אוטומטי בסיס תמונה ייחודי. אם אין בסיס תמונה שצוין על ידי המשתמש ("--image-base"), השתמש בברירת המחדל של הפלטפורמה.

- מחרוזת חיפוש - קידומת

כאשר מקשרים באופן דינמי ל- DLL ללא ספריית ייבוא, חפש את " .dll" בהעדפה ל- "lib <שם קובץ בסיס> .dll". התנהגות זו מאפשרת הבחנה קלה בין קבצי DLL שנבנו עבור "subplatforms" השונים: ילידים, cygwin, uwin, pw וכו '. לדוגמה, קבצי DLL של cygwin משתמשים בדרך כלל ב- "dd-search-prefix = cyg".

- לייבא אוטומטית לייבא

האם קישור מתוחכם של "_ymbol" ל "__imp__symbol" עבור יבוא נתונים מ - DLLs, וליצור את הסמלים thunking הדרושים בעת בניית ספריות היבוא עם אלה DATAexports. בדרך כלל זה יהיה 'פשוט עבודה' --- אבל לפעמים אתה עשוי לראות את ההודעה הזו:

"משתנה" 'לא יכול להיות מיובא אוטומטית. אנא קרא את התיעוד עבור ld של --enable-auto-import "לפרטים".

הודעה זו מתרחשת כאשר ביטוי (sub) כלשהו ניגש לכתובת שניתנת בסופו של דבר על ידי סכום של שני קבועים (טבלאות ייבוא ​​של Win32 מאפשרות רק אחת). מקרים שבהם זה עשוי להתרחש כוללים גישה לשדות החברים של משתני מבניים המיובאים מ- DLL, וכן באמצעות אינדקס קבוע למשתנה מערך שיובא מ- DLL. כל משתנה רב-תכליתי (מערכים, מבנים, זמן ארוך וכו ') עלול לגרום למצב שגיאה זה. עם זאת, ללא קשר לסוג הנתונים המדויק של המשתנה המיוצא הפוגע, ld תמיד יזהה אותו, ינפיק את האזהרה ויציאה.

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

אחת הדרכים היא להשתמש - switchable-runtime-pseudo-reloc לעבור. זה משאיר את המשימה של התאמת הפניות בקוד הלקוח שלך עבור סביבת זמן ריצה, ולכן שיטה זו פועלת רק כאשר סביבת זמן ריצה תומך בתכונה זו.

פתרון שני הוא לכפות על אחד הקבועים להיות משתנה - כלומר, לא ידוע ולא ניתן לשינוי בזמן ההידור. עבור מערכים, ישנן שתי אפשרויות: א) להפוך את המדד (כתובת המערך) משתנה, או) ב להפוך את המדד ה "קבוע" ל משתנה. כָּך:

extern_array סוג חיצוני []; extern_array [1] -> {סוג נדיף * t = extern_array; t [1]}

אוֹ

extern_array סוג חיצוני []; extern_array [1] -> {נדיף int = 1; extern_array [t]}

עבור מבנים (ורוב סוגי הנתונים האחרים של מילות מפתח), האפשרות היחידה היא להפוך את המבנה עצמו (או המשתנה הארוך או הארוך):

extern_struct של extern_struct חיצוני; extern_struct.field -> {volatile struct s * t = & extern_struct; T-> שדה}

אוֹ

extern_ll חיצוני ארוך ארוך; extern_ll -> {long long long * local_ll = & extern_ll; * local_ll}

שיטה שלישית להתמודדות עם קושי זה היא לנטוש 'Auto-import' עבור סמל הפוגע ולסמן אותו עם "__declspec (dllimport)". עם זאת, בפועל זה דורש שימוש בזמן compile- #defines כדי לציין אם אתה בונה DLL, בניית קוד הלקוח כי יהיה קישור ל- DLL, או רק בניין / קישור לספריה סטטי. בהפיכת הבחירה בין השיטות השונות לפתרון 'הכתובת הישירה עם בעיית היסט קבועה', עליך לשקול שימוש טיפוסי בעולם האמיתי:

מְקוֹרִי:

- foo.h extern int arr []; - foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

פתרון 1:

- foo.h extern int arr []; - foo.c #include "foo.h" void main (int argc, char ** argv) {/ * שיטה זו לעקיפת הבעיה היא win32 ו- cygwin; לא "לייעל" * / נדיף int * parr = arr; printf ("% d \ n", parr [1]); }

פתרון 2:

- * / הערה: (___ CYGWIN__)) && \! (מוגדר (FOO_BUILD_DLL) | | (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern fOO_IMPORT int arr []; - foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

דרך רביעית להימנע מבעיה זו היא לקודד מחדש את הספריה כדי להשתמש בממשק פונקציונלי במקום בממשק נתונים עבור פונקציות המשתנים הפוגעים (לדוגמה, פונקציות set_foo () ו- get_foo ( ).

- ניתן לייבא אוטומטית לייבא

אל תנסה לעשות הקישור של sophistingted של "_ymbol" ל "__imp__symbol" עבור DATAimports מ DLLs.

- זמן ריצה- pseudo- רלוק

אם הקוד שלך מכיל ביטויים המתוארים בסעיף 'ייבוא ​​אוטומטי', כלומר, DATAimports מ- DLL עם קיזוז שאינו אפס, בורר זה ייצור וקטור של 'העתקת זמן ריצה של זמן ריצה', אשר ניתן להשתמש בהם על-ידי סביבת זמן ריצה כדי להתאים את הפניות לנתונים כאלה בקוד הלקוח שלך.

- disable-runtime-pseudo-reloc

אל תיצור העתקות פסאודו עבור לא אפס קיזוז יבוא DATA מ DLLs. זוהי ברירת המחדל.

--enable-pe-debug

הצג מידע נוסף על ניקוי באגים הקשור לייבוא ​​אוטומטי של סמל לייבוא.

- יישור

מגדיר את יישור הסעיפים. קטעים בזיכרון תמיד יתחילו בכתובות שהן מספר מרובות של מספר זה. ברירת המחדל היא 0x1000.

- מילואים ערמה

- מילואים ערמה , להתחייב

ציין את כמות הזיכרון כדי לשמור (או לחלופין להתחייב) כדי לשמש מחסנית עבור תוכנית זו. ברירת המחדל היא 2MB שמורות, 4K מחויבת.

-

--subsystem אשר: מרכזי

--subsystem אשר: מרכזי. קַטִין

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

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.