.\" -*- coding: UTF-8 -*- .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .de IX .. .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .if n .ds AD l .\" .\" Required to disable full justification in groff 1.23.0. .\" ======================================================================== .\" .IX العنوان "LD 1" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH LD 1 "9 فبراير 2026" binutils\-2.46 "أدوات تطوير جنو" .if n .ad l .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .nh .SH الاسم ld \- رابط GNU .SH موجز .IX الترويسة موجز ld [\fBoptions\fP] \fIobjfile\fP ... .SH الوصف .IX الترويسة الوصف \&\fBld\fP يجمع عدداً من ملفات الكائنات والأرشيف، ويعيد توطين بياناتها ويربط مراجع الرموز. عادة ما تكون الخطوة الأخيرة في ترجمة البرنامج هي تشغيل \fBld\fP. .PP يقبل \&\fBld\fP ملفات لغة أوامر الرابط (Linker Command Language) المكتوبة بمجموعة عليا من بنية لغة أوامر محرر الروابط الخاصة بـ AT&T\*(Aqs، لتوفير تحكم صريح وكامل في عملية الربط. .PP لا تصف صفحة الدليل هذه لغة الأوامر؛ انظر مدخلة \&\fBld\fP في \f(CW\*(C`info\*(C'\fP لمزيد من التفاصيل حول لغة الأوامر والجوانب الأخرى لموصل GNU. .PP يستخدم هذا الإصدار من \fBld\fP مكتبات BFD العامة للعمل على ملفات الكائنات. يسمح هذا لـ \fBld\fP بقراءة ملفات الكائنات وجمعها وكتابتها بتنسيقات عديدة مختلفة \-\-\- على سبيل المثال، COFF أو \&\f(CW\*(C`a.out\*(C'\fP. يمكن وصل تنسيقات مختلفة معًا لإنتاج أي نوع متاح من ملفات الكائنات. .PP إلى جانب مرونته، يعد واصل GNU أكثر نفعاً من الواصلات الأخرى في تقديم معلومات التشخيص. العديد من الواصلات تتخلى عن التنفيذ مباشرة عند مواجهة خطأ؛ بينما يستمر \&\fBld\fP في التنفيذ كلما أمكن ذلك، مما يتيح لك تحديد أخطاء أخرى (أو في بعض الحالات، الحصول على ملف مخرج رغم وجود الخطأ). .PP رابط غنو (GNU linker) \fBld\fP مخصص لتغطية مجموعة واسعة من الحالات، وليكون متوافقًا قدر الإمكان مع الروابط الأخرى. نتيجة لذلك، لديك العديد من الخيارات للتحكم في سلوكه. .SH الخيارات .IX الترويسة الخيارات يدعم الرابط وفرة من خيارات سطر الأوامر، ولكن في الممارسة الفعلية يُستخدم القليل منها في أي سياق معين. على سبيل المثال، الاستخدام الشائع لـ \fBld\fP هو ربط ملفات الكائنات القياسية في يونكس على نظام يونكس قياسي ومدعوم. في مثل هذا النظام، لربط ملف \f(CW\*(C`hello.o\*(C'\fP: .PP .Vb 1 \& ld \-o /lib/crt0.o hello.o \-lc .Ve .PP يخبر هذا \fBld\fP بإنتاج ملف يسمى \fIoutput\fP كنتيجة لوصل الملف \f(CW\*(C`/lib/crt0.o\*(C'\fP بـ \f(CW\*(C`hello.o\*(C'\fP والمكتبة \f(CW\*(C`libc.a\*(C'\fP، والتي ستأتي من أدلة البحث القياسية. (انظر نقاش خيار \fB\-l\fP أدناه). .PP يمكن تحديد بعض خيارات سطر الأوامر لـ \fBld\fP في أي نقطة من سطر الأوامر. ومع ذلك، فإن الخيارات التي تشير إلى ملفات، مثل \fB\-l\fP أو \fB\-T\fP، تتسبب في قراءة الملف في النقطة التي يظهر فيها الخيار في سطر الأوامر، بالنسبة إلى ملفات الكائنات وخيارات الملفات الأخرى. إن تكرار الخيارات التي لا تتعلق بالملفات بوسيط مختلف لن يكون له تأثير إضافي، أو سيتجاوز التكرارات السابقة (تلك الموجودة في أقصى اليسار في سطر الأوامر) لهذا الخيار. الخيارات التي يمكن تحديدها أكثر من مرة بشكل مفيد مذكورة في الأوصاف أدناه. .PP الوسائط التي ليست خيارات هي ملفات كائنية أو أرشيفات سيجري ربطها معًا. قد تتبع خيارات سطر الأمر، أو تسبقها، أو تختلط بها، باستثناء أنه لا يجوز وضع وسيط ملف كائني بين خيار ووسيطه. .PP عادة ما يُستدعى الموصل بملف كائن واحد على الأقل، ولكن يمكنك تحديد أشكال أخرى من ملفات المدخلات الثنائية باستخدام \fB\-l\fP و \fB\-R\fP ولغة أوامر المخطط. إذا \fIلم\fP يُحدد أي ملف مدخلات ثنائي على الإطلاق، فلن ينتج الموصل أي مخرجات، ويُصدر الرسالة \fBNo input files\fP. .PP إذا لم يتمكن الرابط من التعرف على تنسيق ملف الكائن، فسيفترض أنه نص رابط (linker script). النص البرمجي المحدد بهذه الطريقة يعزز نص الرابط الرئيسي المستخدم للربط (إما نص الرابط الافتراضي أو النص المحدد باستخدام \fB\-T\fP). تسمح هذه الميزة للرابط بالربط مع ملف يبدو وكأنه كائن أو أرشيف، ولكنه في الواقع يحدد فقط بعض قيم الرموز، أو يستخدم \&\f(CW\*(C`INPUT\*(C'\fP أو \f(CW\*(C`GROUP\*(C'\fP لتحميل كائنات أخرى. تحديد نص برمجي بهذه الطريقة يعزز فقط نص الرابط الرئيسي، مع وضع الأوامر الإضافية بعد النص الرئيسي؛ استخدم الخيار \fB\-T\fP لاستبدال نص الرابط الافتراضي بالكامل، ولكن لاحظ تأثير أمر \f(CW\*(C`INSERT\*(C'\fP. .PP للخيارات التي تتكون أسماؤها من حرف واحد، يجب أن تتبع وسائط الخيار حرف الخيار دون مسافة بيضاء، أو تُعطى كوسائط منفصلة مباشرة بعد الخيار الذي يتطلبها. .PP بالنسبة للخيارات التي تتكون أسماؤها من أحرف متعددة، يمكن أن تسبق اسم الخيار إما شرطة واحدة أو شرطتان؛ على سبيل المثال، \fB\-trace\-symbol\fP و \&\fB\-\-trace\-symbol\fP متكافئان. ملاحظة\-\-\-هناك استثناء واحد لهذه القاعدة. الخيارات متعددة الأحرف التي تبدأ بحرف \*(Aqo\*(Aq صغير لا يمكن أن تسبقها إلا شرطتان. هذا لتقليل الالتباس مع خيار \&\fB\-o\fP. فعلى سبيل المثال، يضبط \fB\-omagic\fP اسم ملف المخرج إلى \fBmagic\fP بينما يضبط \fB\-\-omagic\fP علامة NMAGIC على المخرج. .PP يجب أن تكون معطيات الخيارات متعددة الحروف إما مفصولة عن اسم الخيار بعلامة التساوي، أو تُعطى كمعطيات منفصلة مباشرة بعد الخيار الذي يتطلبها. على سبيل المثال، \&\fB\-\-trace\-symbol foo\fP و \fB\-\-trace\-symbol=foo\fP متكافئان. تُقبل الاختصارات الفريدة لأسماء الخيارات متعددة الحروف. .PP ملاحظة\-\-\-إذا كان يتم استدعاء الرابط بشكل غير مباشر، عبر مشغل مصرّف (مثل \fBgcc\fP) فيجب أن تُسبق جميع خيارات سطر أوامر الرابط بـ \fB\-Wl,\fP (أو ما هو مناسب لمشغل مصرّف معين) بهذا الشكل: .PP .Vb 1 \& gcc \-Wl,\-\-start\-group foo.o bar.o \-Wl,\-\-end\-group .Ve .PP هذا أمر مهم، لأنه بخلاف ذلك قد يسقط برنامج مشغل المترجم خيارات الرابط بصمت، مما يؤدي إلى ربط سيئ. قد يحدث ارتباك أيضًا عند تمرير خيارات تتطلب قيمًا عبر المشغل، حيث يعمل استخدام مسافة بين الخيار والمعامل كفاصل، ويؤدي بالمشغل إلى تمرير الخيار فقط إلى الرابط والمعامل إلى المترجم. في هذه الحالة، من الأبسط استخدام الأشكال المتصلة لكل من الخيارات ذات الحرف الواحد والمتعددة الأحرف، مثل: .PP .Vb 1 \& gcc foo.o bar.o \-Wl,\-eENTRY \-Wl,\-Map=a.map .Ve .PP إليك جدول بمفاتيح سطر الأوامر العامة التي يقبلها رابط GNU: .IP \fB@\fP\fIالملف\fP 4 .IX عنصر @file اقرأ خيارات سطر الأوامر من \fIfile\fP. تُدرج الخيارات المقروءة مكان خيار @\fIfile\fP الأصلي. إذا كان \fIfile\fP غير موجود، أو لا يمكن قراءته، فسيُعامل الخيار حرفيًا ولن يُزال. .Sp تُفصل الخيارات في \fIfile\fP بمسافات فارغة. يمكن تضمين حرف مسافة فارغة في خيار ما عن طريق إحاطة الخيار بالكامل إما بعلامات اقتباس مفردة أو مزدوجة. يمكن تضمين أي حرف (بما في ذلك الشرطة المائلة العكسية) عن طريق سبق الحرف المراد تضمينه بشرطة مائلة عكسية. يمكن لـ \fIfile\fP نفسه أن يحتوي على خيارات @\fIfile\fP إضافية؛ وتُعالج أي خيارات من هذا القبيل بشكل متكرر (recursively). .IP "\fB\-a\fP \fIكلمة_مفتاحية\fP" 4 .IX عنصر "\-a كلمة_مفتاحية" هذا الخيار مدعوم من أجل التوافقية مع HP/UX. يجب أن يكون معطى \fIkeyword\fP أحد السلاسل \fBarchive\fP أو \fBshared\fP أو \&\fBdefault\fP. خيار \fB\-aarchive\fP يكافئ وظيفيًا \&\fB\-Bstatic\fP، والكلمتان المفتاحيتان الأخريان تكافئان وظيفيًا \fB\-Bdynamic\fP. يمكن استخدام هذا الخيار أي عدد من المرات. .IP "\fB\-\-audit\fP \fIAUDITLIB\fP" 4 .IX عنصر "\-\-audit AUDITLIB" أضف \fIAUDITLIB\fP إلى مدخل \f(CW\*(C`DT_AUDIT\*(C'\fP في القسم الديناميكي. لا يُتحقق من وجود \&\fIAUDITLIB\fP، ولن يستخدم DT_SONAME المحدد في المكتبة. إذا حُدد عدة مرات سيحتوي \f(CW\*(C`DT_AUDIT\*(C'\fP على قائمة مفصولة بنقطتين لواجهات التدقيق المراد استخدامها. إذا وجد الرابط كائناً به مدخل تدقيق أثناء البحث عن المكتبات المشتركة، فسيضيف مدخل \f(CW\*(C`DT_DEPAUDIT\*(C'\fP مطابقاً في ملف المخرجات. هذا الخيار مفيد فقط على منصات ELF التي تدعم واجهة rtld\-audit. .IP "\fB\-b\fP \fIتنسيق_المدخلات\fP" 4 .IX عنصر "\-b تنسيق\-المدخلات" .PD 0 .IP \fB\-\-format=\fP\fIتنسيق\-المدخلات\fP 4 .IX عنصر \-\-format=تنسيق_الإدخال .PD قد يُضبط \&\fBld\fP لدعم أكثر من نوع من ملفات الكائنات. إذا ضُبط \fBld\fP الخاص بك بهذه الطريقة، فيمكنك استخدام الخيار \&\fB\-b\fP لتحديد التنسيق الثنائي لملفات كائنات المدخلات التي تلي هذا الخيار في سطر الأوامر. حتى عندما يُضبط \fBld\fP لدعم تنسيقات كائنات بديلة، فلا تحتاج عادةً لتحديد هذا، حيث ينبغي ضبط \fBld\fP ليتوقع كتنسيق مدخلات مبدئي التنسيق الأكثر شيوعاً على كل حاسوب. \&\fIinput\-format\fP هو سلسلة نصية، وهي اسم تنسيق معين تدعمه مكتبات BFD. (يمكنك سرد التنسيقات الثنائية المتاحة باستخدام \fBobjdump \-i\fP.) .Sp قد ترغب في استخدام هذا الخيار إذا كنت تربط ملفات بتنسيق ثنائي غير معتاد. يمكنك أيضًا استخدام \fB\-b\fP لتبديل التنسيقات صراحةً (عند ربط ملفات كائنية ذات تنسيقات مختلفة)، وذلك بتضمين \&\fB\-b\fP \fIinput\-format\fP قبل كل مجموعة من الملفات الكائنية في تنسيق معين. .Sp يؤخذ التنسيق الافتراضي من متغير البيئة \&\f(CW\*(C`GNUTARGET\*(C'\fP. .Sp يمكنك أيضًا تحديد تنسيق الإدخال من نص برمجي، باستخدام الأمر \&\f(CW\*(C`TARGET\*(C'\fP؛ .IP "\fB\-c\fP \fIملف_أوامر_MRI\fP" 4 .IX عنصر "\-c ملف\-أوامر\-MRI" .PD 0 .IP \fB\-\-mri\-script=\fP\fIملف\-أوامر\-MRI\fP 4 .IX عنصر \-\-mri\-script=ملف_أوامر_MRI .PD للتوافق مع الروابط الناتجة عن MRI، يقبل \fBld\fP ملفات البرامج النصية المكتوبة بلغة أوامر بديلة ومقيدة، مشروحة في قسم ملفات البرامج النصية المتوافقة مع MRI في وثائق GNU ld. قدم ملفات نصوص MRI بالخيار \fB\-c\fP؛ استخدم الخيار \fB\-T\fP لتشغيل نصوص الرابط المكتوبة بلغة البرمجة النصية \fBld\fP العامة. إذا كان \fIMRI\-cmdfile\fP غير موجود، يبحث \fBld\fP عنه في المجلدات المحددة بأي من خيارات \fB\-L\fP. .IP \fB\-d\fP 4 .IX عنصر \-d .PD 0 .IP \fB\-dc\fP 4 .IX عنصر \-dc .IP \fB\-dp\fP 4 .IX عنصر \-dp .PD هذه الخيارات الثلاثة متكافئة؛ وتُدعم أشكال متعددة للتوافق مع الروابط الأخرى. وهي تخصص مساحة للرموز المشتركة حتى إذا حُدد ملف خرج قابل لإعادة التوطين (باستخدام \fB\-r\fP). أمر السكريبت \f(CW\*(C`FORCE_COMMON_ALLOCATION\*(C'\fP له نفس التأثير. .IP "\fB\-\-depaudit\fP \fIمكتبة_تدقيق\fP" 4 .IX عنصر "\-\-depaudit مكتبة_التدقيق" .PD 0 .IP "\fB\-P\fP \fIمكتبة_التدقيق\fP" 4 .IX عنصر "\-P AUDITLIB" .PD أضف \fIAUDITLIB\fP إلى مدخل \f(CW\*(C`DT_DEPAUDIT\*(C'\fP في القسم الديناميكي. لا يُتحقق من وجود \&\fIAUDITLIB\fP، ولن يستخدم DT_SONAME المحدد في المكتبة. إذا حُدد عدة مرات سيحتوي \f(CW\*(C`DT_DEPAUDIT\*(C'\fP على قائمة مفصولة بنقطتين لواجهات التدقيق المراد استخدامها. هذا الخيار مفيد فقط على منصات ELF التي تدعم واجهة rtld\-audit. خيار \-P مقدم للتوافق مع Solaris. .IP \fB\-\-enable\-linker\-version\fP 4 .IX عنصر \-\-enable\-linker\-version يفعل توجيه نص الرابط \f(CW\*(C`LINKER_VERSION\*(C'\fP، الموصوف في \fBOutput Section Data\fP. إذا تم استخدام هذا التوجيه في نص رابط وتم تفعيل هذا الخيار، فسيتم إدراج سلسلة نصية تحتوي على إصدار الرابط في النقطة الحالية. .Sp ملاحظة \- موقع هذا الخيار في سطر أوامر الرابط مهم. سيؤثر فقط على سكريبتات الرابط التي تأتي بعده في سطر الأوامر، أو تلك المدمجة في الرابط. .IP \fB\-\-disable\-linker\-version\fP 4 .IX عنصر \-\-disable\-linker\-version يعطّل توجيه سكريبت الرابط \f(CW\*(C`LINKER_VERSION\*(C'\fP، بحيث لا يدرج سلسلة نصية للإصدار. هذا هو الوضع المبدئي. .IP \fB\-\-enable\-non\-contiguous\-regions\fP 4 .IX عنصر \-\-enable\-non\-contiguous\-regions يتجنب هذا الخيار توليد خطأ إذا لم يتناسب قسم المدخلات مع قسم مخرجات مطابق. يحاول الموصل تخصيص قسم المدخلات لأقسام مخرجات مطابقة لاحقة، ولا يولد خطأ إلا إذا لم يكن هناك قسم مخرجات كبير بما يكفي. هذا مفيد عندما تتوفر عدة مناطق ذاكرة غير متجاورة ولا يتطلب قسم المدخلات منطقة محددة. الترتيب الذي تُقيم به أقسام المدخلات لا يتغير، على سبيل المثال: .Sp .Vb 10 \& MEMORY { \& MEM1 (rwx) : ORIGIN = 0x1000, LENGTH = 0x14 \& MEM2 (rwx) : ORIGIN = 0x1000, LENGTH = 0x40 \& MEM3 (rwx) : ORIGIN = 0x2000, LENGTH = 0x40 \& } \& SECTIONS { \& mem1 : { *(.data.*); } > MEM1 \& mem2 : { *(.data.*); } > MEM2 \& mem3 : { *(.data.*); } > MEM3 \& } \& \& بأقسام المدخلات: \& .data.1: size 8 \& .data.2: size 0x10 \& .data.3: size 4 \& \& ينتج عنها تأثر .data.1 بـ mem1، وتأثر .data.2 و .data.3 \& بـ mem2، على الرغم من أن .data.3 ستناسب mem3. .Ve .Sp هذا الخيار غير متوافق مع جمل INSERT لأنه يغير الطريقة التي تُعيّن بها أقسام المدخلات إلى أقسام المخرجات. .IP \fB\-\-enable\-non\-contiguous\-regions\-warnings\fP 4 .IX عنصر \-\-enable\-non\-contiguous\-regions\-warnings يُمكّن هذا الخيار التحذيرات عندما يسمح \&\f(CW\*(C`\-\-enable\-non\-contiguous\-regions\*(C'\fP بمطابقات غير متوقعة محتملة في تعيين الأقسام، مما قد يؤدي إلى تجاهل قسم بصمت بدلاً من الفشل لعدم ملاءمته لأي منطقة مخرجات. .IP "\fB\-e\fP \fIالمدخلة\fP" 4 .IX عنصر "\-e مدخل" .PD 0 .IP \fB\-\-entry=\fP\fIالمدخل\fP 4 .IX عنصر \-\-entry=المدخل .PD استخدم \fIentry\fP كرمز صريح لبدء تنفيذ برنامجك، بدلًا من نقطة الدخول المبدئية. إذا لم يكن هناك رمز باسم \fIentry\fP، سيحاول الرابط تحليل \fIentry\fP كرقم، واستخدامه كعنوان دخول (سيُفسر الرقم بالأساس 10؛ يمكنك استخدام بادئة \fB0x\fP للأساس 16، أو بادئة \&\fB0\fP للأساس 8). بالنسبة لـ i386 PE، يمكن أن يكون \fIentry\fP أيضًا اسم الوظيفة الأصلي (بدون الشرطة السفلية البادئة و/أو stdcall اللاحق \f(CB@number\fR عند الاقتضاء). .IP "\fB\-\-exclude\-libs\fP \fIمكتبة\fP\fB,\fP\fIمكتبة\fP\fB,...\fP" 4 .IX عنصر "\-\-exclude\-libs المكتبة,المكتبة,..." يحدد قائمة بمكتبات الأرشيف التي ينبغي عدم تصدير رموزها تلقائياً. يمكن فصل أسماء المكتبات بفواصل أو نقطتين رأسيين. يؤدي تحديد \&\f(CW\*(C`\-\-exclude\-libs ALL\*(C'\fP إلى استبعاد الرموز في جميع مكتبات الأرشيف من التصدير التلقائي. هذا الخيار متاح فقط لإصدار الرابط المستهدف لـ i386 PE وللإصدارات المستهدفة لـ ELF. بالنسبة لـ i386 PE، تظل الرموز المدرجة صراحة في ملف .def مُصدرة بغض النظر عن هذا الخيار. بالنسبة للإصدارات المستهدفة لـ ELF، سيتم التعامل مع الرموز المتأثرة بهذا الخيار على أنها مخفية. .IP "\fB\-\-exclude\-modules\-for\-implib\fP \fIوحدة\fP\fB,\fP\fIوحدة\fP\fB,...\fP" 4 .IX عنصر "\-\-exclude\-modules\-for\-implib الوحدة,الوحدة,..." يحدد قائمة بملفات الكائنات أو أعضاء الأرشيف، والتي لا ينبغي تصدير رموزها آلياً، ولكن ينبغي نسخها بالجملة إلى مكتبة الاستيراد التي تُولد أثناء الربط. قد تُفصل أسماء الوحدات بفاصلات أو نقطتين رأسيتين، ويجب أن تطابق تماماً أسماء الملفات المستخدمة بواسطة \fBld\fP لفتح الملفات؛ بالنسبة لأعضاء الأرشيف، هذا مجرد اسم العضو، ولكن بالنسبة لملفات الكائنات، يجب أن يتضمن الاسم المدرج ويطابق بدقة أي مسار استُخدم لتحديد ملف المدخلات في سطر أوامر الرابط. يتوفر هذا الخيار فقط لمنفذ i386 PE المستهدف للرابط. الرموز المدرجة صراحة في ملف .def ستُصدر بالرغم من هذا الخيار. .IP \fB\-E\fP 4 .IX عنصر \-E .PD 0 .IP \fB\-\-export\-dynamic\fP 4 .IX عنصر \-\-export\-dynamic .IP \fB\-\-no\-export\-dynamic\fP 4 .IX عنصر \-\-no\-export\-dynamic .PD عند إنشاء ملف تنفيذي مربوط ديناميكيًا، يؤدي استخدام خيار \fB\-E\fP أو خيار \fB\-\-export\-dynamic\fP إلى قيام المرابط بإضافة كافة الرموز إلى جدول الرموز الديناميكي. جدول الرموز الديناميكي هو مجموعة الرموز التي يمكن رؤيتها من الكائنات الديناميكية في وقت التشغيل. .Sp إذا لم تستخدم أيًا من هذين الخيارين (أو استخدمت الخيار \&\fB\-\-no\-export\-dynamic\fP لاستعادة السلوك الافتراضي)، فسيحتوي جدول الرموز الديناميكي عادةً فقط على تلك الرموز التي يشار إليها بواسطة كائن ديناميكي مذكور في عملية الربط. .Sp إذا كنت تستخدم \f(CW\*(C`dlopen\*(C'\fP لتحميل كائن ديناميكي يحتاج إلى الإشارة إلى الرموز المعرفة بواسطة البرنامج نفسه، بدلاً من كائن ديناميكي آخر، فمن المحتمل أنك ستحتاج إلى استخدام هذا الخيار عند ربط البرنامج نفسه. .Sp يمكنك أيضًا استخدام القائمة الديناميكية للتحكم في الرموز التي يجب إضافتها إلى جدول الرموز الديناميكي إذا كان تنسيق المخرجات يدعم ذلك. انظر وصف \fB\-\-dynamic\-list\fP. .Sp لاحظ أن هذا الخيار خاص بالمنافذ التي تستهدف ELF. تدعم أهداف PE وظيفة مماثلة لتصدير جميع الرموز من DLL أو EXE؛ راجع وصف \fB\-\-export\-all\-symbols\fP أدناه. .IP \fB\-\-export\-dynamic\-symbol=\fP\fIنمط\fP 4 .IX عنصر \-\-export\-dynamic\-symbol=glob عند إنشاء ملف تنفيذي مربوط ديناميكيًا، ستُضاف الرموز المطابقة لـ \&\fIglob\fP إلى جدول الرموز الديناميكي. عند إنشاء مكتبة مشتركة، لن تُربط الإشارات إلى الرموز المطابقة لـ \fIglob\fP بالتعريفات داخل المكتبة المشتركة. لا يؤدي هذا الخيار أي وظيفة عند إنشاء مكتبة مشتركة ما لم يُحدد \fB\-Bsymbolic\fP أو \&\fB\-\-dynamic\-list\fP. هذا الخيار ذو معنى فقط على منصات ELF التي تدعم المكتبات المشتركة. .IP \fB\-\-export\-dynamic\-symbol\-list=\fP\fIملف\fP 4 .IX عنصر \-\-export\-dynamic\-symbol\-list=ملف تحديد \fB\-\-export\-dynamic\-symbol\fP لكل نمط في الملف. تنسيق الملف هو نفسه عقدة الإصدار بدون النطاق واسم العقدة. انظر \fBVERSION\fP لمزيد من المعلومات. .IP \fB\-EB\fP 4 .IX عنصر \-EB ربط كائنات big\-endian. يؤثر هذا على تنسيق المخرجات المبدئي. .IP \fB\-EL\fP 4 .IX عنصر \-EL ربط كائنات little\-endian. يؤثر هذا على تنسيق المخرجات المبدئي. .IP "\fB\-f\fP \fIالاسم\fP" 4 .IX عنصر "\-f اسم" .PD 0 .IP \fB\-\-auxiliary=\fP\fIاسم\fP 4 .IX عنصر \-\-auxiliary=الاسم .PD عند إنشاء كائن ELF مشترك، اضبط حقل DT_AUXILIARY الداخلي على الاسم المحدد. يخبر هذا المرابط الديناميكي بوجوب استخدام جدول رموز الكائن المشترك كمرشح مساعد على جدول رموز الكائن المشترك \fIname\fP. .Sp إذا قمت لاحقاً بربط برنامج مقابل كائن الفلتر هذا، فعند تشغيل البرنامج، سيرى الرابط الديناميكي حقل DT_AUXILIARY. إذا قام الرابط الديناميكي بحل أي رموز من كائن الفلتر، فسيتحقق أولاً مما إذا كان هناك تعريف في الكائن المشترك \&\fIname\fP. إذا وجد واحداً، فسيتم استخدامه بدلاً من التعريف الموجود في كائن الفلتر. لا يلزم وجود الكائن المشترك \fIname\fP بالضرورة؛ لذا يمكن استخدامه لتوفير تنفيذ بديل لدوال معينة، ربما لأغراض التصحيح أو لتحسين الأداء الخاص بجهاز معين. .Sp قد يُحدد هذا الخيار أكثر من مرة. ستُنشأ مدخلات DT_AUXILIARY بالترتيب الذي تظهر به في سطر الأوامر. .IP "\fB\-F\fP \fIالاسم\fP" 4 .IX عنصر "\-F name" .PD 0 .IP \fB\-\-filter=\fP\fIالاسم\fP 4 .IX عنصر \-\-filter=name .PD عند إنشاء كائن ELF مشترك، اضبط حقل DT_FILTER الداخلي على الاسم المحدد. يخبر هذا المرابط الديناميكي بوجوب استخدام جدول رموز الكائن المشترك الذي يجري إنشاؤه كمرشح على جدول رموز الكائن المشترك \fIname\fP. .Sp إذا قمت لاحقاً بربط برنامج مقابل كائن الفلتر هذا، فعند تشغيل البرنامج، سيرى الرابط الديناميكي حقل DT_FILTER. سيقوم الرابط الديناميكي بحل الرموز وفقاً لجدول رموز كائن الفلتر كالمعتاد، ولكنه سيرتبط فعلياً بالتعاريف الموجودة في الكائن المشترك \fIname\fP. وبالتالي يمكن استخدام كائن الفلتر لتحديد مجموعة فرعية من الرموز التي يوفرها الكائن \&\fIname\fP. .Sp استخدمت بعض الروابط القديمة الخيار \fB\-F\fP عبر سلسلة أدوات الترجمة لتحديد تنسيق ملف الكائنات لكل من ملفات الكائنات المدخلة والمخرجة. يستخدم رابط GNU آليات أخرى لهذا الغرض: الخيارات \&\fB\-b\fP و \fB\-\-format\fP و \fB\-\-oformat\fP، والأمر \&\f(CW\*(C`TARGET\*(C'\fP في سكربتات الرابط، ومتغير البيئة \f(CW\*(C`GNUTARGET\*(C'\fP. سيتجاهل رابط GNU الخيار \fB\-F\fP عندما لا يقوم بإنشاء كائن ELF مشترك. .IP \fB\-fini=\fP\fIالاسم\fP 4 .IX عنصر \-fini=اسم عند إنشاء ملف تنفيذي ELF أو كائن مشترك، استدعِ NAME عند تفريغ الملف التنفيذي أو الكائن المشترك، وذلك بضبط DT_FINI على عنوان الوظيفة. مبدئيًا، يستخدم المرابط \f(CW\*(C`_fini\*(C'\fP كالوظيفة المطلوب استدعاؤها. .IP \fB\-g\fP 4 .IX عنصر \-g مُتجاهَل. متوفر للتوافق مع الأدوات الأخرى. .IP "\fB\-G\fP \fIالقيمة\fP" 4 .IX عنصر "\-G value" .PD 0 .IP \fB\-\-gpsize=\fP\fIقيمة\fP 4 .IX عنصر \-\-gpsize=القيمة .PD اضبط الحد الأقصى لحجم الكائنات المراد تحسينها باستخدام سجل GP لتكون \&\fIsize\fP. هذا ذو معنى فقط لتنسيقات ملفات الكائنات مثل MIPS ELF التي تدعم وضع الكائنات الكبيرة والصغيرة في أقسام مختلفة. يُتجاهل هذا في تنسيقات ملفات الكائنات الأخرى. .IP "\fB\-h\fP \fIالاسم\fP" 4 .IX عنصر "\-h اسم" .PD 0 .IP \fB\-soname=\fP\fIاسم\fP 4 .IX عنصر \-soname=اسم .PD عند إنشاء كائن ELF مشترك، اضبط حقل DT_SONAME الداخلي على الاسم المحدد. عندما يربط ملف تنفيذي بكائن مشترك له حقل DT_SONAME، فعند تشغيل الملف التنفيذي سيحاول المرابط الديناميكي تحميل الكائن المشترك المحدد بحقل DT_SONAME بدلاً من استخدام اسم الملف المعطى للمرابط. .IP \fB\-i\fP 4 .IX عنصر \-i أجرِ ربطاً تزايدياً (مثل الخيار \fB\-r\fP). .IP \fB\-init=\fP\fIاسم\fP 4 .IX عنصر \-init=اسم عند إنشاء ملف تنفيذي ELF أو كائن مشترك، استدعِ NAME عند تحميل الملف التنفيذي أو الكائن المشترك، وذلك بضبط DT_INIT على عنوان الوظيفة. مبدئيًا، يستخدم المرابط \f(CW\*(C`_init\*(C'\fP كالوظيفة المطلوب استدعاؤها. .IP "\fB\-l\fP \fInamespec\fP" 4 .IX عنصر "\-l namespec" .PD 0 .IP \fB\-\-library=\fP\fIتوصيف\-الاسم\fP 4 .IX عنصر \-\-library=اسم_المكتبة .PD أضف الأرشيف أو ملف الكائن المحدد بواسطة \fInamespec\fP إلى قائمة الملفات المطلوب ربطها. يمكن استخدام هذا الخيار أي عدد من المرات. إذا كان \fInamespec\fP على شكل \fI:filename\fP، سيبحث \fBld\fP في مسار المكتبة عن ملف يسمى \fIfilename\fP، وإلا سيبحث في مسار المكتبة عن ملف يسمى \fIlibnamespec.a\fP. .Sp في الأنظمة التي تدعم المكتبات المشتركة، قد يبحث \fBld\fP أيضًا عن ملفات بخلاف \fIlibnamespec.a\fP. تحديدًا، في أنظمة ELF و SunOS، سيبحث \fBld\fP في دليل عن مكتبة تسمى \fIlibnamespec.so\fP قبل البحث عن واحدة تسمى \&\fIlibnamespec.a\fP. (اصطلاحًا، تشير اللاحقة \f(CW\*(C`.so\*(C'\fP إلى مكتبة مشتركة). لاحظ أن هذا السلوك لا ينطبق على \fI:filename\fP، الذي يحدد دائمًا ملفًا يسمى \&\fIfilename\fP. .Sp سيبحث الرابط في الأرشيف مرة واحدة فقط، في الموقع الذي حُدد فيه على سطر الأوامر. إذا كان الأرشيف يعرف رمزاً كان غير محدد في كائن ظهر قبل الأرشيف على سطر الأوامر، فسيقوم الرابط بتضمين الملف (أو الملفات) المناسبة من الأرشيف. ومع ذلك، فإن الرمز غير المحدد في كائن يظهر لاحقاً على سطر الأوامر لن يجعل الرابط يبحث في الأرشيف مرة أخرى. .Sp انظر الخيار \fB\-(\fP لأسلوب يجبر الموصل على البحث في الأرشيفات عدة مرات. .Sp يمكنك إدراج الأرشيف ذاته عدة مرات في سطر الأوامر. .Sp هذا النوع من البحث في الأرشيفات قياسي لموصلات Unix. ومع ذلك، إذا كنت تستخدم \fBld\fP على AIX، فلاحظ أنه يختلف عن سلوك موصل AIX. .IP "\fB\-L\fP \fIدليل_البحث\fP" 4 .IX عنصر "\-L searchdir" .PD 0 .IP \fB\-\-library\-path=\fP\fIدليل\-البحث\fP 4 .IX عنصر \-\-library\-path=دليل_البحث .PD أضف مسار \fIsearchdir\fP إلى قائمة المسارات التي سيبحث فيها \fBld\fP عن مكتبات الأرشيف وسكربتات التحكم \fBld\fP. يمكنك استخدام هذا الخيار أي عدد من المرات. تُبحث الأدلة بالترتيب الذي حُددت به في سطر الأوامر. تُبحث الأدلة المحددة في سطر الأوامر قبل الأدلة المبدئية. تنطبق جميع خيارات \&\fB\-L\fP على جميع خيارات \fB\-l\fP، بغض النظر عن الترتيب الذي تظهر به الخيارات. لا تؤثر خيارات \fB\-L\fP على كيفية بحث \fBld\fP عن سكربت الرابط ما لم يُحدد خيار \fB\-T\fP. .Sp إذا بدأ \fIsearchdir\fP بـ \f(CW\*(C`=\*(C'\fP أو \f(CW$SYSROOT\fP، فسيُستبدل هذا البادئة بـ \fIsysroot prefix\fP، المتحكم فيه عبر خيار \&\fB\-\-sysroot\fP، أو المحدد عند ضبط الرابط. .Sp تعتمد مجموعة المسارات الافتراضية التي يتم البحث فيها (دون تحديدها باستخدام \&\fB\-L\fP) على وضع المحاكاة الذي يستخدمه \fBld\fP، وفي بعض الحالات تعتمد أيضًا على كيفية إعداده. .Sp يمكن أيضاً تحديد المسارات في سكريبت ربط باستخدام أمر \&\f(CW\*(C`SEARCH_DIR\*(C'\fP. الدلائل المحددة بهذه الطريقة يُبحث فيها عند النقطة التي يظهر فيها سكريبت الرابط في سطر الأوامر. .IP "\fB\-m\fP \fIمحاكاة\fP" 4 .IX عنصر "\-m محاكاة" حاكي رابط \fIemulation\fP. يمكنك سرد المحاكيات المتاحة باستخدام خياري \fB\-\-verbose\fP أو \fB\-V\fP. .Sp إذا لم يتم استخدام الخيار \fB\-m\fP، يتم أخذ المحاكاة من متغير البيئة \&\f(CW\*(C`LDEMULATION\*(C'\fP، إذا كان معرفًا. .Sp وإلا، تعتمد المحاكاة المبدئية على كيفية ضبط الرابط. .IP \fB\-\-remap\-inputs=\fP\f(BIالنمط\fB=\fP\f(BIاسم_الملف\fR 4 .IX عنصر \-\-remap\-inputs=نمط=اسم_الملف .PD 0 .IP \fB\-\-remap\-inputs\-file=\fP\f(BIملف\fR 4 .IX عنصر \-\-remap\-inputs\-file=ملف .PD تسمح هذه الخيارات بتغيير أسماء ملفات الإدخال قبل أن يحاول الرابط فتحها. سيؤدي الخيار \&\fB\-\-remap\-inputs=foo.o=bar.o\fP إلى أن تحاول أي محاولة لتحميل ملف يسمى \fIfoo.o\fP بدلاً من ذلك تحميل ملف يسمى \&\fIbar.o\fP. يُسمح بأنماط البدل في اسم الملف الأول، لذا فإن \fB\-\-remap\-inputs=foo*.o=bar.o\fP سيعيد تسمية أي ملف إدخال يطابق \fIfoo*.o\fP إلى \fIbar.o\fP. .Sp يسمح شكل بديل للخيار \&\fB\-\-remap\-inputs\-file=filename\fP بقراءة عمليات إعادة التعيين من ملف. يمكن أن يحتوي كل سطر في الملف على عملية إعادة تعيين واحدة. تُتجاهل الأسطر الفارغة. يُعتبر أي شيء من محرف الهاش (\fB#\fP) حتى نهاية السطر تعليقاً ويُتجاهل أيضاً. يمكن فصل نمط التعيين عن اسم الملف بمسافة بيضاء أو بمحرف التساوي (\fB=\fP). .Sp يمكن تحديد الخيارات عدة مرات. تتراكم محتوياتها. ستُعالج إعادة التعيينات بالترتيب الذي تظهر به على سطر الأوامر، وإذا كانت من ملف، فبالترتيب الذي تظهر به في الملف. إذا حدث تطابق، فلن يُجرى مزيد من الفحص لاسم الملف هذا. .Sp إذا كان اسم ملف الاستبدال هو \fI/dev/null\fP أو مجرد \fINUL\fP، فإن إعادة التعيين ستؤدي فعلياً إلى تجاهل ملف الدخل. يمكن أن تكون هذه طريقة ملائمة لتجربة إزالة ملفات الدخل من بيئة بناء معقدة. .Sp لاحظ أن هذا الخيار يعتمد على الموضع ويؤثر فقط على أسماء الملفات التي تأتي بعده في سطر الأوامر. هكذا: .Sp .Vb 1 \& ld foo.o \-\-remap\-inputs=foo.o=bar.o .Ve .Sp لن يكون له أي تأثير، بينما: .Sp .Vb 1 \& ld \-\-remap\-inputs=foo.o=bar.o foo.o .Ve .Sp سيُغير اسم ملف المدخل \fIfoo.o\fP إلى \fIbar.o\fP. .Sp ملاحظة \- تؤثر هذه الخيارات أيضًا على الملفات المشار إليها ببيانات \fIINPUT\fP في سكريبتات الرابط. ولكن بما أن سكريبتات الرابط تُعالج بعد قراءة سطر الأوامر بالكامل، فإن موقع خيارات إعادة التعيين (remap) على سطر الأوامر ليس له أهمية. .Sp إذا تم تفعيل خيار \fBverbose\fP، فسيتم الإبلاغ عن أي تعيينات متطابقة، مع العلم أنه يجب تفعيل خيار \fBverbose\fP في سطر الأوامر \fIقبل\fP ظهور أسماء الملفات المعاد تعيينها. .Sp إذا تم تفعيل خياري \fB\-Map\fP أو \fB\-\-print\-map\fP، فسيتم تضمين قائمة إعادة التعيين في مخرجات الخريطة. .IP \fB\-M\fP 4 .IX عنصر \-M .PD 0 .IP \fB\-\-print\-map\fP 4 .IX عنصر \-\-print\-map .PD اطبع خريطة ربط في المخرج القياسي. توفر خريطة الربط معلومات حول الربط، بما في ذلك ما يلي: .RS 4 .IP \(bu 4 حيث تُمثل ملفات الكائنات في الذاكرة. .IP \(bu 4 كيفية تخصيص الرموز المشتركة. .IP \(bu 4 كافة أعضاء الأرشيف المضمنين في الارتباط، مع ذكر الرمز الذي تسبب في جلب عضو الأرشيف. .IP \(bu 4 القيم المسندة للرموز. .Sp ملاحظة \- الرموز التي تُحسب قيمها بواسطة تعبير يتضمن إشارة إلى قيمة سابقة لنفس الرمز قد لا تظهر لها نتيجة صحيحة في خريطة الربط. هذا لأن الرابط يتجاهل النتائج المتوسطة ويحتفظ فقط بالقيمة النهائية للتعبير. في مثل هذه الظروف، سيعرض الرابط القيمة النهائية محاطة بأقواس مربعة. هكذا على سبيل المثال سكريبت رابط يحتوي على: .Sp .Vb 3 \& foo = 1 \& foo = foo * 4 \& foo = foo + 8 .Ve .Sp سينتج المخرجات التالية في خريطة الارتباط إذا استُخدم الخيار \fB\-M\fP: .Sp .Vb 3 \& 0x00000001 foo = 0x1 \& [0x0000000c] foo = (foo * 0x4) \& [0x0000000c] foo = (foo + 0x8) .Ve .Sp انظر \fBExpressions\fP لمزيد من المعلومات حول التعبيرات في سكربتات الموصل (linker). .IP \(bu 4 كيفية دمج خصائص GNU. .Sp عندما يدمج المرابط أقسام note.gnu.property. للمدخلات في قسم note.gnu.property. واحد للمخرج، تُزال بعض الخصائص أو تُحدث. يُبلغ عن هذه الإجراءات في خريطة الربط. على سبيل المثال: .Sp .Vb 1 \& أُزيلت الخاصية 0xc0000002 لدمج foo.o (0x1) و bar.o (لم يُعثر عليه) .Ve .Sp يشير هذا إلى أن الخاصية 0xc0000002 أُزيلت من المخرج عند دمج الخصائص في \fIfoo.o\fP، الذي قيمة خاصيته 0xc0000002 هي 0x1، و \fIbar.o\fP، الذي لا يملك الخاصية 0xc0000002. .Sp .Vb 1 \& حُدثت الخاصية 0xc0010001 (0x1) لدمج foo.o (0x1) و bar.o (0x1) .Ve .Sp يشير هذا إلى أن قيمة الخاصية 0xc0010001 تُحدث إلى 0x1 في الخرج عند دمج الخصائص في \fIfoo.o\fP، التي قيمة خاصيتها 0xc0010001 هي 0x1، و \fIbar.o\fP، التي قيمة خاصيتها 0xc0010001 هي 0x1. .IP \(bu 4 في بعض أهداف ELF، قائمة بالتحسينات (fixups) التي أدخلها \fB\-\-relax\fP .Sp .Vb 1 \& foo.o: Adjusting branch at 0x00000008 towards "far" in section .text .Ve .Sp يشير هذا إلى أن الفرع عند 0x00000008 في foo.o، والذي يستهدف الرمز "far" في القسم .text، قد استُبدل بـ trampoline. .RE .RS 4 .RE .IP \fB\-\-print\-map\-discarded\fP 4 .IX عنصر \-\-print\-map\-discarded .PD 0 .IP \fB\-\-no\-print\-map\-discarded\fP 4 .IX عنصر \-\-no\-print\-map\-discarded .PD اطبع (أو لا تطبع) قائمة الأقسام المهملة والتي جُمعت نفاياتها في خريطة الربط. ممكّن مبدئياً. .IP \fB\-\-print\-map\-locals\fP 4 .IX عنصر \-\-print\-map\-locals .PD 0 .IP \fB\-\-no\-print\-map\-locals\fP 4 .IX عنصر \-\-no\-print\-map\-locals .PD اطبع (أو لا تطبع) الرموز المحلية في خريطة الربط. ستتم طباعة نص \fB(local)\fP قبل أسماء الرموز المحلية، وسيتم إدراجها بعد جميع الرموز العالمية في قسم معين. لن يتم تضمين الرموز المحلية المؤقتة (عادةً تلك التي تبدأ بـ \fB.L\fP) في المخرج. معطل مبدئياً. .IP \fB\-n\fP 4 .IX عنصر \-n .PD 0 .IP \fB\-\-nmagic\fP 4 .IX عنصر \-\-nmagic .PD أوقف محاذاة الصفحات للأقسام، وعطل الربط بالمكتبات المشتركة. إذا كان تنسيق المخرجات يدعم الأرقام السحرية بأسلوب يونكس، فضع علامة على المخرجات بأنها \f(CW\*(C`NMAGIC\*(C'\fP. .IP \fB\-N\fP 4 .IX عنصر \-N .PD 0 .IP \fB\-\-omagic\fP 4 .IX عنصر \-\-omagic .PD اجعل قسمي النص والبيانات قابلين للقراءة والكتابة. وأيضًا، لا توازن شريحة البيانات بالصفحات، وعطل الربط مع المكتبات المشتركة. إذا كان تنسيق المخرجات يدعم الأرقام السحرية بأسلوب يونكس، فميز المخرجات كـ \f(CW\*(C`OMAGIC\*(C'\fP. ملاحظة: رغم أن قسم النص القابل للكتابة مسموح به لأهداف PE\-COFF، إلا أنه لا يتوافق مع مواصفات التنسيق المنشورة من قبل مايكروسوفت. .IP \fB\-\-no\-omagic\fP 4 .IX عنصر \-\-no\-omagic ينفي هذا الخيار معظم تأثيرات الخيار \fB\-N\fP. يضبط قسم النص ليكون للقراءة فقط، ويفرض محاذاة مقطع البيانات مع الصفحات. ملاحظة \- لا يُمكّن هذا الخيار الوصل مع المكتبات المشتركة. استخدم \fB\-Bdynamic\fP لهذا الغرض. .IP "\fB\-o\fP \fIالمخرج\fP" 4 .IX عنصر "\-o مخرج" .PD 0 .IP \fB\-\-output=\fP\fIالمخرج\fP 4 .IX عنصر \-\-output=الإخراج .PD استخدم \fIoutput\fP كاسم للبرنامج الناتج عن \fBld\fP؛ إذا لم يُحدد هذا الخيار، يُستخدم الاسم \fIa.out\fP مبدئيًا. يمكن لأمر السكربت \f(CW\*(C`OUTPUT\*(C'\fP أيضًا تحديد اسم ملف المخرجات. .Sp ملاحظة \- سيقوم الرابط بحذف ملف المخرجات قبل أن يبدأ في الكتابة إليه. سيفعل ذلك حتى لو تبين أنه لا يمكن إكمال الربط بسبب وجود أخطاء. .Sp ملاحظة \- سيتحقق الرابط للتأكد من أن اسم ملف المخرجات لا يطابق اسم أي من ملفات المدخلات، ولكن هذا كل شيء. وبوجه الخصوص لن يشتكي إذا كان ملف المخرجات قد يكتب فوق ملف مصدر أو ملف مهم آخر. لذلك في أنظمة البناء يوصى باستخدام الخيار \fB\-o\fP كآخر خيار في سطر أوامر الرابط. على سبيل المثال لننظر في: .Sp .Vb 2 \& ld \-o $(EXE) $(OBJS) \& ld $(OBJS) \-o $(EXE) .Ve .Sp إذا لم يكن المتغير \fBEXE\fP معرفًا لسبب ما، فإن الإصدار الأول من أمر الرابط قد ينتهي به الأمر بحذف أحد ملفات الكائنات (الأول في قائمة \fBOBJS\fP) بينما سيصدر الإصدار الثاني من أمر الرابط رسالة خطأ ولن يحذف أي شيء. .IP \fB\-\-dependency\-file=\fP\fIملف_اعتمادية\fP 4 .IX عنصر \-\-dependency\-file=ملف_الاعتمادية يكتب \fIdependency file\fP إلى \fIdepfile\fP. يحتوي هذا الملف على قاعدة مناسبة لـ \f(CW\*(C`make\*(C'\fP تصف ملف المخرج وجميع ملفات المدخلات التي قُرئت لإنتاجه. المخرج مشابه لمخرج المترجم مع \fB\-M \-MP\fP. لاحظ أنه لا يوجد خيار مثل \fB\-MM\fP الخاص بالمترجم لاستبعاد "system files" (وهو مفهوم غير محدد بدقة في الرابط، على عكس "system headers" في المترجم). لذا فإن المخرج من \&\fB\-\-dependency\-file\fP يكون دائماً خاصاً بالحالة الدقيقة للتثبيت الذي أُنتج فيه، ولا ينبغي نسخه إلى ملفات makefile الموزعة دون تحرير دقيق. .IP "\fB\-O\fP \fIالمستوى\fP" 4 .IX عنصر "\-O level" إذا كان \fIlevel\fP قيمة عددية أكبر من الصفر، فسيقوم \fBld\fP بتحسين المخرج. قد يستغرق هذا وقتاً أطول بكثير، ولذلك ربما ينبغي تمكينه فقط للثنائي النهائي. في الوقت الحالي، يؤثر هذا الخيار فقط على توليد مكتبة ELF المشتركة. قد تستفيد الإصدارات المستقبلية من الرابط أكثر من هذا الخيار. كما أنه لا يوجد حالياً فرق في سلوك الرابط لقيم مختلفة غير صفرية لهذا الخيار. ومرة أخرى، قد يتغير هذا مع الإصدارات المستقبلية. .IP "\fB\-plugin\fP \fIاسم\fP" 4 .IX عنصر "\-plugin اسم" إشراك ملحق (plugin) في عملية الربط. المعامل \fIname\fP هو اسم الملف المطلق للملحق. عادة ما يضاف هذا المعامل تلقائياً بواسطة المترجم (compiler) عند استخدام تحسين وقت الربط (link time optimization)، ولكن يمكن للمستخدمين أيضاً إضافة ملحقاتهم الخاصة إذا رغبوا في ذلك. .Sp لاحظ أن موقع الملحقات الصادرة عن المصرّف يختلف عن المكان الذي تبحث فيه برامج \fBar\fP و \fBnm\fP و \&\fBranlib\fP عن ملحقاتها. لكي تتمكن هذه الأوامر من استخدام ملحق مستند إلى المصرّف يجب أولاً نسخه إلى دليل \fI${libdir}/bfd\-plugins\fP. جميع ملحقات الرابط المستندة إلى gcc متوافقة مع الإصدارات السابقة، لذا يكفي نسخ الأحدث منها فقط. .IP \fB\-\-push\-state\fP 4 .IX عنصر \-\-push\-state يسمح \fB\-\-push\-state\fP بحفظ الحالة الحالية للأعلام التي تحكم التعامل مع ملف المدخلات بحيث يمكن استعادتها جميعًا بخيار \fB\-\-pop\-state\fP واحد مطابق. .Sp الخيارات المغطاة هي: \fB\-Bdynamic\fP، و \fB\-Bstatic\fP، و \&\fB\-dn\fP، و \fB\-dy\fP، و \fB\-call_shared\fP، و \fB\-non_shared\fP، و \&\fB\-static\fP، و \fB\-N\fP، و \fB\-n\fP، و \fB\-\-whole\-archive\fP، و \&\fB\-\-no\-whole\-archive\fP، و \fB\-r\fP، و \fB\-Ur\fP، و \&\fB\-\-copy\-dt\-needed\-entries\fP، و \fB\-\-no\-copy\-dt\-needed\-entries\fP، و \&\fB\-\-as\-needed\fP، و \fB\-\-no\-as\-needed\fP، و \fB\-a\fP. .Sp أحد الأهداف لهذا الخيار هو مواصفات \fIpkg\-config\fP. عند استخدامه مع الخيار \fB\-\-libs\fP، يجري سرد جميع المكتبات التي قد تكون مطلوبة ثم ربطها طوال الوقت. من الأفضل إرجاع شيء كما يلي: .Sp .Vb 1 \& \-Wl,\-\-push\-state,\-\-as\-needed \-libone \-libtwo \-Wl,\-\-pop\-state .Ve .IP \fB\-\-pop\-state\fP 4 .IX عنصر \-\-pop\-state يلغي أثر \fB\-\-push\-state\fP، ويستعيد القيم السابقة للأعلام التي تحكم معالجة ملفات المدخلات. .IP \fB\-q\fP 4 .IX عنصر \-q .PD 0 .IP \fB\-\-emit\-relocs\fP 4 .IX عنصر \-\-emit\-relocs .PD تُترك أقسام ومحتويات إعادة التعيين في الملفات التنفيذية المترابطة كلياً. قد تحتاج أدوات التحليل وتحسين ما بعد الترابط إلى هذه المعلومات لإجراء تعديلات صحيحة على الملفات التنفيذية. يؤدي هذا إلى ملفات تنفيذية أكبر حجماً. .Sp هذا الخيار مدعوم حاليًا على منصات ELF فقط. .IP \fB\-\-force\-dynamic\fP 4 .IX عنصر \-\-force\-dynamic اجبر ملف المخرجات على احتواء أقسام ديناميكية. هذا الخيار خاص بأهداف VxWorks. .IP \fB\-r\fP 4 .IX عنصر \-r .PD 0 .IP \fB\-\-relocatable\fP 4 .IX عنصر \-\-relocatable .PD يولد مخرجاً قابلاً لإعادة التوطين\-\-\-أي يولد ملف مخرج يمكن بدوره أن يعمل كمدخل لـ \fBld\fP. يسمى هذا غالباً \fIpartial linking\fP. كأثر جانبي، في البيئات التي تدعم أرقام يونكس السحرية القياسية، يضبط هذا الخيار أيضاً الرقم السحري لملف المخرج إلى \&\f(CW\*(C`OMAGIC\*(C'\fP. إذا لم يُحدد هذا الخيار، سيُنتج ملف مطلق. عند ربط برامج ++C، فإن هذا الخيار \fIلن\fP يحل المراجع للمنشئات (constructors)؛ للقيام بذلك، استخدم \fB\-Ur\fP. .Sp عندما لا يكون لملف مدخل نفس تنسيق ملف المخرج، يكون الربط الجزئي مدعومًا فقط إذا كان ملف المدخل ذاك لا يحتوي على أي عمليات إعادة توطين. يمكن أن يكون لتنسيقات المخرجات المختلفة قيود إضافية؛ على سبيل المثال، بعض التنسيقات المعتمدة على \f(CW\*(C`a.out\*(C'\fP لا تدعم الربط الجزئي مع ملفات مدخلات بتنسيقات أخرى على الإطلاق. .Sp عندما يحتوي المخرج القابل لإعادة التوطين على محتويات تتطلب تحسين وقت الربط (LTO) ومحتويات لا تتطلبه، سيُنشأ قسم .gnu_object_only ليحتوي على ملف كائن قابل لإعادة التوطين، كما لو طُبق \fB\-r\fP على جميع المدخلات القابلة لإعادة التوطين التي لا تتطلب LTO. عند معالجة مدخل قابل لإعادة التوطين يحتوي على قسم \&.gnu_object_only، سيستخرج الرابط قسم .gnu_object_only كمدخل منفصل. .Sp لاحظ أنه بما أن \fB\-r\fP يجمع بعض الأجزاء من ملفات مدخلات مختلفة معًا، فقد تكون هناك تأثيرات سلبية على حجم الكود ومحليته في الملف التنفيذي النهائي أو المكتبة المشتركة. .Sp يفعل هذا الخيار نفس ما يفعله \fB\-i\fP. .IP "\fB\-R\fP \fIاسم_الملف\fP" 4 .IX عنصر "\-R filename" .PD 0 .IP \fB\-\-just\-symbols=\fP\fIاسم\-الملف\fP 4 .IX عنصر \-\-just\-symbols=اسم_الملف .PD قراءة أسماء الرموز وعناوينها من \fIfilename\fP، ولكن لا يُعاد توطينها أو تضمينها في المخرجات. يسمح هذا لملف مخرجاتك بالإشارة رمزيًا إلى مواقع مطلقة في الذاكرة معرفة في برامج أخرى. يمكنك استخدام هذا الخيار أكثر من مرة. .Sp للتوافق مع روابط ELF الأخرى، إذا تبع الخيار \fB\-R\fP اسم مجلد بدلاً من اسم ملف، فسيتم التعامل معه كخيار \fB\-rpath\fP. .IP \fB\-\-rosegment\fP 4 .IX عنصر \-\-rosegment .PD 0 .IP \fB\-\-no\-rosegment\fP 4 .IX عنصر \-\-no\-rosegment .PD حاول ضمان إنشاء قطعة واحدة فقط للقراءة فقط وغير مخصصة للكود. لا يفيد ذلك إلا عند استخدامه مع خيار \fB\-z separate\-code\fP. يجب أن تكون الثنائيات الناتجة أصغر مما لو استخدم \fB\-z separate\-code\fP بمفرده. بدون هذا الخيار، أو إذا حُدد \fB\-\-no\-rosegment\fP، سينشئ الخيار \fB\-z separate\-code\fP قطعتين للقراءة فقط، واحدة قبل قطعة الكود والأخرى بعدها. .Sp أسماء الخيارات مضللة، لكنها اختيرت لكي يكون الرابط متوافقاً مع رابطي LLD و GOLD. .Sp هذه الخيارات مدعومة فقط من قبل أهداف ELF. .IP \fB\-s\fP 4 .IX عنصر \-s .PD 0 .IP \fB\-\-strip\-all\fP 4 .IX عنصر \-\-strip\-all .PD حذف جميع معلومات الرموز من ملف المخرجات. .IP \fB\-S\fP 4 .IX عنصر \-S .PD 0 .IP \fB\-\-strip\-debug\fP 4 .IX عنصر \-\-strip\-debug .PD حذف معلومات رموز المنقح (ولكن ليس كل الرموز) من ملف المخرجات. .IP \fB\-\-strip\-discarded\fP 4 .IX عنصر \-\-strip\-discarded .PD 0 .IP \fB\-\-no\-strip\-discarded\fP 4 .IX عنصر \-\-no\-strip\-discarded .PD حذف (أو عدم حذف) الرموز العامة المعرفة في الأجزاء المهملة. ممكن افتراضيًا. .IP \fB\-plugin\-save\-temps\fP 4 .IX عنصر \-plugin\-save\-temps تخزين الملفات الوسيطة "المؤقتة" للملحق بشكل دائم. .IP \fB\-t\fP 4 .IX عنصر \-t .PD 0 .IP \fB\-\-trace\fP 4 .IX عنصر \-\-trace .PD اطبع أسماء ملفات الإدخال بينما يعالجها \fBld\fP. إذا أُعطي \&\fB\-t\fP مرتين، فتُطبع أيضاً الأعضاء داخل الأرشيفات. مخرج \&\fB\-t\fP مفيد لتوليد قائمة بجميع ملفات الكائنات والسكربتات المشاركة في الربط، على سبيل المثال، عند تجميع الملفات لتقرير خطأ في الرابط. .IP "\fB\-T\fP \fIملف_السكربت\fP" 4 .IX عنصر "\-T scriptfile" .PD 0 .IP \fB\-\-script=\fP\fIملف_السكربت\fP 4 .IX عنصر \-\-script=ملف_السكربت .PD يستخدم \fIscriptfile\fP كسكربت للرابط. يحل هذا السكربت محل سكربت الرابط المبدئي لـ \&\fBld\fP (بدلاً من الإضافة إليه)، ما لم يحتوِ السكربت على \f(CW\*(C`INSERT\*(C'\fP، لذا يجب أن يحدد \fIcommandfile\fP كل شيء ضروري لوصف ملف المخرج. .Sp إذا لم يوجد \fIscriptfile\fP في الدليل الحالي، يبحث \f(CW\*(C`ld\*(C'\fP عنه في الأدلة المحددة بأي خيارات \fB\-L\fP سابقة. .Sp خيارات سطر الأوامر التي تظهر قبل الخيار \fB\-T\fP يمكن أن تؤثر على النص البرمجي، لكن خيارات سطر الأوامر التي تظهر بعده لا تؤثر. .Sp ستتراكم خيارات \fB\-T\fP المتعددة إذا كانت تعزز السكربت الحالي، وإلا فسيتم استخدام خيار \fB\-T\fP الأخير غير المعزز. .Sp هناك طرق أخرى لتحديد سكريبتات الرابط. انظر .IP "\fB\-dT\fP \fIملف_السكربت\fP" 4 .IX عنصر "\-dT scriptfile" .PD 0 .IP \fB\-\-default\-script=\fP\fIملف_سكربت\fP 4 .IX عنصر \-\-default\-script=ملف_السكربت .PD استخدم \fIscriptfile\fP كسكربت الرابط المبدئي. .Sp يشبه هذا الخيار خيار \fB\-\-script\fP باستثناء أن معالجة السيناريو تتأخر إلى ما بعد معالجة بقية سطر الأوامر. يسمح هذا للخيارات الموضوعة بعد خيار \&\fB\-\-default\-script\fP في سطر الأوامر بالتأثير على سلوك سيناريو الموصل، وهو ما يمكن أن يكون مهمًا عندما لا يمكن للمستخدم التحكم مباشرة في سطر أوامر الموصل (على سبيل المثال لأن سطر الأوامر يجري إنشاؤه بواسطة أداة أخرى، مثل \&\fBgcc\fP). .IP "\fB\-u\fP \fIرمز\fP" 4 .IX عنصر "\-u symbol" .PD 0 .IP \fB\-\-undefined=\fP\fIالرمز\fP 4 .IX عنصر \-\-undefined=رمز .PD اجبر \fIالرمز\fP على الدخول في ملف المخرجات كرمز غير معرف. القيام بذلك قد يؤدي، على سبيل المثال، إلى إطلاق ربط وحدات إضافية من المكتبات القياسية. يمكن تكرار \fB\-u\fP مع وسائط خيارات مختلفة لإدخال رموز غير معرفة إضافية. هذا الخيار يكافئ أمر نص الرابط \f(CW\*(C`EXTERN\*(C'\fP. .Sp إذا كان هذا الخيار مستخدماً لإجبار سحب وحدات إضافية إلى عملية الربط، وكان بقاء الرمز غير معرف يعتبر خطأ، فيجب استخدام الخيار \fB\-\-require\-defined\fP بدلاً من ذلك. .IP \fB\-\-require\-defined=\fP\fIالرمز\fP 4 .IX عنصر \-\-require\-defined=الرمز اشتراط تعريف \fIsymbol\fP في ملف المخرجات. هذا الخيار هو نفسه الخيار \fB\-\-undefined\fP باستثناء أنه إذا لم يُعرّف \fIsymbol\fP في ملف المخرجات فإن الرابط سيصدر خطأ ويخرج. يمكن تحقيق نفس التأثير في سكربت الرابط باستخدام \&\f(CW\*(C`EXTERN\*(C'\fP و \f(CW\*(C`ASSERT\*(C'\fP و \f(CW\*(C`DEFINED\*(C'\fP معًا. يمكن استخدام هذا الخيار عدة مرات لاشتراط رموز إضافية. .IP \fB\-Ur\fP 4 .IX عنصر \-Ur للبرامج التي لا تستخدم المنشئات أو المدمرات، أو للأنظمة القائمة على ELF، يكافئ هذا الخيار \fB\-r\fP: فهو يولد مخرجات قابلة لإعادة التوطين؛ أي ملف مخرجات يمكن استخدامه بدوره كمدخل لـ \fBld\fP. أما بالنسبة للثنائيات الأخرى، فإن الخيار \fB\-Ur\fP مشابه لـ \fB\-r\fP ولكنه يحل أيضًا المراجع إلى المنشئات والمدمرات. .Sp بالنسبة للأنظمة التي يختلف فيها سلوك \fB\-r\fP و \fB\-Ur\fP، لا ينجح استخدام \fB\-Ur\fP على ملفات رُبطت هي نفسها باستخدام \fB\-Ur\fP؛ بمجرد بناء جدول المنشئات، لا يمكن الإضافة إليه. استخدم \fB\-Ur\fP فقط لآخر ربط جزئي، و \fB\-r\fP للبقية. .IP \fB\-\-orphan\-handling=\fP\fIالوضع\fP 4 .IX عنصر \-\-orphan\-handling=الوضع تحكم في كيفية التعامل مع الأقسام اليتيمة. القسم اليتيم هو قسم لم يُذكر صراحة في نص الموصل البرمجي. .Sp \&\fIMODE\fP يمكن أن يأخذ أي من القيم التالية: .RS 4 .ie n .IP """place""" 4 .el .IP \f(CWplace\fR 4 .IX عنصر place يتم وضع الأجزاء اليتيمة (Orphan sections) في جزء مخرجات مناسب باتباع الاستراتيجية الموصوفة في \fBOrphan Sections\fP. يؤثر الخيار \&\fB\-\-unique\fP أيضًا على كيفية وضع الأجزاء. .ie n .IP """discard""" 4 .el .IP \f(CWdiscard\fR 4 .IX عنصر discard يتم تجاهل جميع الأقسام اليتيمة (orphan sections) عبر وضعها في قسم \&\fB/DISCARD/\fP. .ie n .IP """warn""" 4 .el .IP \f(CWwarn\fR 4 .IX عنصر warn سيضع الرابط القسم اليتيم كما هو الحال في \f(CW\*(C`place\*(C'\fP وسيصدر أيضاً تحذيراً. .ie n .IP """error""" 4 .el .IP \f(CWerror\fR 4 .IX عنصر error سيخرج الرابط بخطأ إذا وُجد أي قسم يتيم. .RE .RS 4 .Sp الافتراضي إذا لم يُعطَ \fB\-\-orphan\-handling\fP هو \f(CW\*(C`place\*(C'\fP. .RE .IP \fB\-\-unique[=\fP\fIالقسم\fP\fB]\fP 4 .IX عنصر \-\-unique[=قسم] ينشئ قسم خرج منفصلاً لكل قسم دخل يطابق \&\fISECTION\fP، أو إذا غابت وسيطة النمط الاختيارية \fISECTION\fP، لكل قسم دخل يتيم. القسم اليتيم هو قسم لم يُذكر صراحة في نص الموصل البرمجي. يمكنك استخدام هذا الخيار عدة مرات في سطر الأوامر؛ حيث يمنع الدمج العادي لأقسام الدخل التي تحمل نفس الاسم، متجاوزًا تعيينات قسم الخرج في نص الموصل البرمجي. .IP \fB\-v\fP 4 .IX عنصر \-v .PD 0 .IP \fB\-\-version\fP 4 .IX عنصر \-\-version .IP \fB\-V\fP 4 .IX عنصر \-V .PD اعرض رقم إصدار \fBld\fP. يسرد الخيار \fB\-V\fP أيضاً المحاكيات المدعومة. انظر أيضاً وصف \&\fB\-\-enable\-linker\-version\fP في خيارات سطر الأوامر، والذي يمكن استخدامه لإدراج سلسلة إصدار الرابط في ملف ثنائي. .IP \fB\-x\fP 4 .IX عنصر \-x .PD 0 .IP \fB\-\-discard\-all\fP 4 .IX عنصر \-\-discard\-all .PD احذف كافة الرموز المحلية. .IP \fB\-X\fP 4 .IX عنصر \-X .PD 0 .IP \fB\-\-discard\-locals\fP 4 .IX عنصر \-\-discard\-locals .PD احذف كافة الرموز المحلية المؤقتة. (تبدأ هذه الرموز ببادئات لصائق محلية خاصة بالنظام، عادة \fB.L\fP لأنظمة ELF أو \fBL\fP لأنظمة a.out التقليدية.) .IP "\fB\-y\fP \fIرمز\fP" 4 .IX عنصر "\-y رمز" .PD 0 .IP \fB\-\-trace\-symbol=\fP\fIالرمز\fP 4 .IX عنصر \-\-trace\-symbol=الرمز .PD اطبع اسم كل ملف مرتبط يظهر فيه الرمز \fIsymbol\fP. قد يُعطى هذا الخيار أي عدد من المرات. في العديد من الأنظمة، من الضروري إضافة شرطة سفلية في البداية. .Sp هذا الخيار مفيد عندما يكون لديك رمز غير معرف في عملية الربط لكنك لا تعرف من أين يأتي المرجع. .IP "\fB\-Y\fP \fIالمسار\fP" 4 .IX عنصر "\-Y path" أضف \fIpath\fP إلى مسار بحث المكتبة المبدئي. هذا الخيار موجود للتوافق مع سولاريس. .IP "\fB\-z\fP \fIكلمة_مفتاحية\fP" 4 .IX عنصر "\-z كلمة_مفتاحية" الكلمات المفتاحية المعترف بها هي: .RS 4 .IP \fBcall\-nop=prefix\-addr\fP 4 .IX عنصر call\-nop=prefix\-addr .PD 0 .IP \fBcall\-nop=suffix\-nop\fP 4 .IX عنصر call\-nop=suffix\-nop .IP \fBcall\-nop=prefix\-\fP\fIbyte\fP 4 .IX عنصر call\-nop=prefix\-byte .IP \fBcall\-nop=suffix\-\fP\fIbyte\fP 4 .IX عنصر call\-nop=suffix\-byte .PD تحديد حشو \f(CW\*(C`NOP\*(C'\fP بطول 1 بايت عند تحويل استدعاء غير مباشر إلى دالة معرفة محلياً، foo، عبر فتحة GOT الخاصة بها. \&\fBcall\-nop=prefix\-addr\fP يولد \f(CW\*(C`0x67 call foo\*(C'\fP. \&\fBcall\-nop=suffix\-nop\fP يولد \f(CW\*(C`call foo 0x90\*(C'\fP. \&\fBcall\-nop=prefix\-\fP\fIbyte\fP يولد \f(CW\*(C`\fP\f(CIbyte\f(CW call foo\*(C'\fP. \&\fBcall\-nop=suffix\-\fP\fIbyte\fP يولد \f(CW\*(C`call foo \fP\f(CIbyte\f(CW\*(C'\fP. مدعوم لمعالجات i386 و x86_64. .IP \fBcet\-report=none\fP 4 .IX عنصر cet\-report=none .PD 0 .IP \fBcet\-report=warning\fP 4 .IX عنصر cet\-report=warning .IP \fBcet\-report=error\fP 4 .IX عنصر cet\-report=error .PD تحديد كيفية الإبلاغ عن خصائص GNU_PROPERTY_X86_FEATURE_1_IBT و GNU_PROPERTY_X86_FEATURE_1_SHSTK المفقودة في قسم .note.gnu.property المدخل. \fBcet\-report=none\fP، وهو الافتراضي، سيجعل الرابط لا يبلغ عن الخصائص المفقودة في ملفات الإدخال. \&\fBcet\-report=warning\fP سيجعل الرابط يصدر تحذيراً للخصائص المفقودة في ملفات الإدخال. \fBcet\-report=error\fP سيجعل الرابط يصدر خطأ للخصائص المفقودة في ملفات الإدخال. لاحظ أن \fBibt\fP سيوقف التقرير عن خاصية GNU_PROPERTY_X86_FEATURE_1_IBT المفقودة و \fBshstk\fP سيوقف التقرير عن خاصية GNU_PROPERTY_X86_FEATURE_1_SHSTK المفقودة. مدعوم لأنظمة Linux/i386 و Linux/x86_64. .IP \fBcombreloc\fP 4 .IX عنصر combreloc .PD 0 .IP \fBnocombreloc\fP 4 .IX عنصر nocombreloc .PD اجمع بين أقسام إعادة التوطين الديناميكية المتعددة ورتبها لتحسين تخبئة البحث عن الرموز الديناميكية. لا تفعل هذا إذا استُخدم \fBnocombreloc\fP. .IP \fBcommon\fP 4 .IX عنصر common .PD 0 .IP \fBnocommon\fP 4 .IX عنصر nocommon .PD ولد رموزًا مشتركة بنوع STT_COMMON أثناء ربط قابل لإعادة التوطين. استخدم نوع STT_OBJECT في حال \fBnocommon\fP. .IP \fBcommon\-page\-size=\fP\fIvalue\fP 4 .IX عنصر common\-page\-size=value اضبط حجم الصفحة الأكثر شيوعًا على \fIvalue\fP. سيُحسن تخطيط صورة الذاكرة لتقليل صفحات الذاكرة إذا كان النظام يستخدم صفحات بهذا الحجم. .IP \fBdefs\fP 4 .IX عنصر defs الإبلاغ عن مراجع الرموز غير المحلولة من ملفات الكائنات العادية. يتم ذلك حتى لو كان الرابط ينشئ مكتبة مشتركة غير رمزية. هذا الخيار هو عكس \fB\-z undefs\fP. .IP \fBdynamic\-undefined\-weak\fP 4 .IX عنصر dynamic\-undefined\-weak .PD 0 .IP \fBnodynamic\-undefined\-weak\fP 4 .IX عنصر nodynamic\-undefined\-weak .PD جعل الرموز الضعيفة غير المعرفة ديناميكية عند بناء كائن ديناميكي، إذا تمت الإشارة إليها من ملف كائن عادي ولم تُفرض كمحلية بواسطة رؤية الرموز أو الإصدارات. لا تجعلها ديناميكية إذا استُخدم \&\fBnodynamic\-undefined\-weak\fP. إذا لم يُعطَ أي من الخيارين، فقد يعتمد الهدف مبدئياً على أي من الخيارين، أو يختار رموزاً ضعيفة غير معرفة أخرى لجعلها ديناميكية. لا تدعم جميع الأهداف هذه الخيارات. .IP \fBexecstack\fP 4 .IX عنصر execstack يعلم الكائن كونه يتطلب مكدساً قابلاً للتنفيذ. .IP \fBglobal\fP 4 .IX عنصر global يكون هذا الخيار ذا معنى فقط عند بناء كائن مشترك. يجعل الرموز المعرفة بواسطة هذا الكائن المشترك متاحة لحل الرموز للمكتبات المحملة لاحقًا. .IP \fBglobalaudit\fP 4 .IX عنصر globalaudit يكون هذا الخيار ذا معنى فقط عند بناء ملف تنفيذي حيوي. يميز هذا الخيار الملف التنفيذي على أنه يتطلب تدقيقًا عامًا عن طريق ضبط بت \f(CW\*(C`DF_1_GLOBAUDIT\*(C'\fP في الوسم الحيوي \f(CW\*(C`DT_FLAGS_1\*(C'\fP. يتطلب التدقيق العام تشغيل أي مكتبة تدقيق محددة عبر خيارات سطر الأوامر \fB\-\-depaudit\fP أو \fB\-P\fP لجميع الكائنات الحيوية المحملة بواسطة التطبيق. .IP \fBibtplt\fP 4 .IX عنصر ibtplt ولد مدخلات PLT مُمكّنة لـ Intel Indirect Branch Tracking (IBT). مدعوم لأنظمة Linux/i386 و Linux/x86_64. .IP \fBibt\fP 4 .IX عنصر ibt ولد GNU_PROPERTY_X86_FEATURE_1_IBT في قسم .note.gnu.property للإشارة إلى التوافق مع IBT. يتضمن هذا أيضًا \fBibtplt\fP. مدعوم لأنظمة Linux/i386 و Linux/x86_64. .IP \fBindirect\-extern\-access\fP 4 .IX عنصر indirect\-extern\-access .PD 0 .IP \fBnoindirect\-extern\-access\fP 4 .IX عنصر noindirect\-extern\-access .PD ولد GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS في قسم \&.note.gnu.property للإشارة إلى أن ملف الكائن يتطلب مؤشرات دالة قانونية ولا يمكن استخدامه مع إعادة توطين النسخ. يتضمن هذا الخيار أيضًا \fBnoextern\-protected\-data\fP و \&\fBnocopyreloc\fP. مدعوم لمنصات i386 و x86\-64. .Sp \&\fBnoindirect\-extern\-access\fP يزيل GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS من قسم .note.gnu.property. .IP \fBinitfirst\fP 4 .IX عنصر initfirst يكون هذا الخيار ذا معنى فقط عند بناء كائن مشترك. فإنه يميز الكائن بحيث يحدث تهيئته وقت التشغيل قبل تهيئة أي كائنات أخرى جُلبت إلى العملية في نفس الوقت. وبالمثل، سيحدث إنهاء الكائن وقت التشغيل بعد الإنهاء وقت التشغيل لأي كائنات أخرى. .IP \fBinterpose\fP 4 .IX عنصر interpose تحديد أن المحمل الديناميكي يجب أن يعدل ترتيب بحث الرموز لديه بحيث تتداخل الرموز في هذه المكتبة المشتركة مع جميع المكتبات المشتركة الأخرى غير المميزة بهذه السمة. .IP \fBunique\fP 4 .IX عنصر unique .PD 0 .IP \fBnounique\fP 4 .IX عنصر nounique .PD عند توليد مكتبة مشتركة أو كائن ELF آخر قابل للتحميل ديناميكيًا، سمه ككائن ينبغي (مبدئيًا) ألا يُحمل إلا مرة واحدة فقط، وفقط في مساحة الأسماء الرئيسة (عند استخدام \f(CW\*(C`dlmopen\*(C'\fP). يستخدم هذا أساسًا لوسم المكتبات الأساسية مثل libc و libpthread وغيرها التي لا تعمل عادةً بشكل صحيح ما لم تكن هي النسخة الوحيدة من نفسها. يمكن للمستدعي \f(CW\*(C`dlmopen\*(C'\fP تجاوز هذا السلوك، كما أنه لا ينطبق على بعض آليات التحميل (مثل مكتبات التدقيق). .IP \fBlam\-u48\fP 4 .IX عنصر lam\-u48 ولد GNU_PROPERTY_X86_FEATURE_1_LAM_U48 في قسم .note.gnu.property للإشارة إلى التوافق مع Intel LAM_U48. مدعوم لنظام Linux/x86_64. .IP \fBlam\-u57\fP 4 .IX عنصر lam\-u57 ولد GNU_PROPERTY_X86_FEATURE_1_LAM_U57 في قسم .note.gnu.property للإشارة إلى التوافق مع Intel LAM_U57. مدعوم لنظام Linux/x86_64. .IP \fBlam\-u48\-report=none\fP 4 .IX عنصر lam\-u48\-report=none .PD 0 .IP \fBlam\-u48\-report=warning\fP 4 .IX عنصر lam\-u48\-report=warning .IP \fBlam\-u48\-report=error\fP 4 .IX عنصر lam\-u48\-report=error .PD تحديد كيفية الإبلاغ عن خاصية GNU_PROPERTY_X86_FEATURE_1_LAM_U48 المفقودة في قسم .note.gnu.property المدخل. \&\fBlam\-u48\-report=none\fP، وهو الافتراضي، سيجعل الرابط لا يبلغ عن الخصائص المفقودة في ملفات الإدخال. \&\fBlam\-u48\-report=warning\fP سيجعل الرابط يصدر تحذيراً للخصائص المفقودة في ملفات الإدخال. \fBlam\-u48\-report=error\fP سيجعل الرابط يصدر خطأ للخصائص المفقودة في ملفات الإدخال. مدعوم لأنظمة Linux/x86_64. .IP \fBlam\-u57\-report=none\fP 4 .IX عنصر lam\-u57\-report=none .PD 0 .IP \fBlam\-u57\-report=warning\fP 4 .IX عنصر lam\-u57\-report=warning .IP \fBlam\-u57\-report=error\fP 4 .IX عنصر lam\-u57\-report=error .PD تحديد كيفية الإبلاغ عن خاصية GNU_PROPERTY_X86_FEATURE_1_LAM_U57 المفقودة في قسم .note.gnu.property المدخل. \&\fBlam\-u57\-report=none\fP، وهو الافتراضي، سيجعل الرابط لا يبلغ عن الخصائص المفقودة في ملفات الإدخال. \&\fBlam\-u57\-report=warning\fP سيجعل الرابط يصدر تحذيراً للخصائص المفقودة في ملفات الإدخال. \fBlam\-u57\-report=error\fP سيجعل الرابط يصدر خطأ للخصائص المفقودة في ملفات الإدخال. مدعوم لأنظمة Linux/x86_64. .IP \fBlam\-report=none\fP 4 .IX عنصر lam\-report=none .PD 0 .IP \fBlam\-report=warning\fP 4 .IX عنصر lam\-report=warning .IP \fBlam\-report=error\fP 4 .IX عنصر lam\-report=error .PD تحديد كيفية الإبلاغ عن خصائص GNU_PROPERTY_X86_FEATURE_1_LAM_U48 و GNU_PROPERTY_X86_FEATURE_1_LAM_U57 المفقودة في قسم .note.gnu.property المدخل. \fBlam\-report=none\fP، وهو الافتراضي، سيجعل الرابط لا يبلغ عن الخصائص المفقودة في ملفات الإدخال. \&\fBlam\-report=warning\fP سيجعل الرابط يصدر تحذيراً للخصائص المفقودة في ملفات الإدخال. \fBlam\-report=error\fP سيجعل الرابط يصدر خطأ للخصائص المفقودة في ملفات الإدخال. مدعوم لأنظمة Linux/x86_64. .IP \fBlazy\fP 4 .IX عنصر lazy عند توليد ملف تنفيذي أو مكتبة مشتركة، سمه لإخبار المرابط الديناميكي بتأجيل حل استدعاء الوظيفة إلى اللحظة التي تُستدعى فيها الوظيفة (الربط الكسول)، بدلاً من وقت التحميل. الربط الكسول هو السلوك المبدئي. .IP \fBloadfltr\fP 4 .IX عنصر loadfltr يحدد وجوب معالجة مرشحات الكائن فوراً في وقت التشغيل. .IP \fBmax\-page\-size=\fP\fIالقيمة\fP 4 .IX عنصر max\-page\-size=value اضبط الحد الأقصى لحجم صفحة الذاكرة المدعوم على \fIvalue\fP. .IP \fBmark\-plt\fP 4 .IX عنصر mark\-plt .PD 0 .IP \fBnomark\-plt\fP 4 .IX عنصر nomark\-plt .PD يميز مدخلات PLT بوسوم ديناميكية، DT_X86_64_PLT و DT_X86_64_PLTSZ و DT_X86_64_PLTENT. بما أن هذا الخيار يخزن قيمة غير صفرية في حقل r_addend لإعادة توطين R_X86_64_JUMP_SLOT، فإن الملفات التنفيذية والمكتبات المشتركة الناتجة تكون غير متوافقة مع الروابط الديناميكية، مثل تلك الموجودة في الإصدارات القديمة من glibc بدون التغيير لتجاهل r_addend في إعادة توطين R_X86_64_GLOB_DAT و R_X86_64_JUMP_SLOT، والتي لا تتجاهل حقل r_addend الخاص بإعادة توطين R_X86_64_JUMP_SLOT. مدعوم لـ x86_64. .IP \fBmuldefs\fP 4 .IX عنصر muldefs السماح بتعريفات متعددة. .IP \fBnocopyreloc\fP 4 .IX عنصر nocopyreloc عطّل متغيرات .dynbss التي يولدها الرابط والمستخدمة بدلاً من المتغيرات المعرفة في المكتبات المشتركة. قد يؤدي ذلك إلى عمليات إعادة توطين نصية حركية. .IP \fBnodefaultlib\fP 4 .IX عنصر nodefaultlib تحديد أن بحث المحمل الديناميكي عن اعتماديات هذا الكائن يجب أن يتجاهل أي مسارات بحث افتراضية للمكتبات. .IP \fBnodelete\fP 4 .IX عنصر nodelete يحدد وجوب عدم إلغاء تحميل الكائن في وقت التشغيل. .IP \fBnodlopen\fP 4 .IX عنصر nodlopen تحديد أن الكائن غير متاح لـ \f(CW\*(C`dlopen\*(C'\fP. .IP \fBnodump\fP 4 .IX عنصر nodump تحديد أنه لا يمكن تفريغ الكائن بواسطة \f(CW\*(C`dldump\*(C'\fP. .IP \fBnoexecstack\fP 4 .IX عنصر noexecstack يعلم الكائن كونه لا يتطلب مكدساً قابلاً للتنفيذ. .IP \fBnoextern\-protected\-data\fP 4 .IX عنصر noextern\-protected\-data لا يعامل رموز البيانات المحمية كخارجية عند بناء مكتبة مشتكة. يتجاوز هذا الخيار الإعداد المبدئي لخلفية الرابط. يمكن استخدامه للالتفاف على عمليات إعادة التوطين غير الصحيحة ضد رموز البيانات المحمية التي يولدها المترجم. التحديثات على رموز البيانات المحمية بواسطة وحدة أخرى ليست مرئية للمكتبة المشتركة الناتجة. مدعوم لـ i386 و x86\-64. .IP \fBnoreloc\-overflow\fP 4 .IX عنصر noreloc\-overflow عطّل فحص تجاوز سعة إعادة التوطين. يمكن استخدام هذا لتعطيل فحص تجاوز السعة إذا لم يكن هناك تجاوز سعة لإعادة توطين حركي وقت التشغيل. مدعوم لمعمارية x86_64. .IP \fBختم_الذاكرة\fP 4 .IX عنصر memory\-seal .PD 0 .IP \fBnomemory\-seal\fP 4 .IX عنصر nomemory\-seal .PD إصدار تعليمات للملف التنفيذي أو المكتبة المشتركة بوجوب ختم (seal) جميع أجزاء PT_LOAD لتجنب التلاعب اللاحق بها (مثل تغيير أعلام الحماية، أو حجم الجزء، أو إزالة التعيين). هذا إجراء لتقوية الأمن يتطلب دعماً من النظام. يولد هذا GNU_PROPERTY_MEMORY_SEAL في قسم .note.gnu.property. .IP \fBnow\fP 4 .IX عنصر الآن عند توليد ملف تنفيذي أو مكتبة مشتركة، سمه لإخبار المرابط الديناميكي بحل كافة الرموز عند بدء البرنامج، أو عند تحميل المكتبة المشتركة بواسطة dlopen، بدلاً من تأجيل حل استدعاء الوظيفة إلى اللحظة التي تُستدعى فيها للمرة الأولى. .IP \fBorigin\fP 4 .IX عنصر origin تحديد أن الكائن يتطلب معالجة \f(CB$ORIGIN\fR في المسارات. .IP \fBpack\-relative\-relocs\fP 4 .IX عنصر pack\-relative\-relocs .PD 0 .IP \fBnopack\-relative\-relocs\fP 4 .IX عنصر nopack\-relative\-relocs .PD ولد إعادة توطين نسبية مدمجة في الملفات التنفيذية المستقلة عن الموقع والمكتبات المشتركة. يضيف مدخلات \f(CW\*(C`DT_RELR\*(C'\fP، \f(CW\*(C`DT_RELRSZ\*(C'\fP و \&\f(CW\*(C`DT_RELRENT\*(C'\fP إلى القسم الديناميكي. يتم تجاهله عند بناء مخرجات تنفيذية معتمدة على الموقع أو قابلة لإعادة التوطين. \&\fBnopack\-relative\-relocs\fP هو المبدئي، الذي يعطل إعادة التوطين النسبية المدمجة. عند الربط بمكتبة GNU C، تُضاف تبعية إصدار رمز GLIBC_ABI_DT_RELR على مكتبة C المشتركة إلى المخرجات. مدعوم لمنصات i386 و x86\-64. .IP \fBrelro\fP 4 .IX عنصر relro .PD 0 .IP \fBnorelro\fP 4 .IX عنصر norelro .PD ينشئ ترويسة قطعة ELF من نوع \f(CW\*(C`PT_GNU_RELRO\*(C'\fP في الكائن. يحدد هذا قطعة ذاكرة ينبغي جعلها للقراءة فقط بعد إعادة التوطين، إذا كان ذلك مدعوماً. تحديد \fBcommon\-page\-size\fP أصغر من حجم صفحة النظام سيجعل هذه الحماية غير فعالة. لا تنشئ قطعة ELF من نوع \f(CW\*(C`PT_GNU_RELRO\*(C'\fP إذا استُخدم \fBnorelro\fP. .IP \fBreport\-relative\-reloc\fP 4 .IX عنصر report\-relative\-reloc الإبلاغ عن عمليات إعادة التوطين النسبية الديناميكية المولدة بواسطة الرابط. مدعوم لـ Linux/i386 و Linux/x86_64. .IP \fBsectionheader\fP 4 .IX عنصر sectionheader .PD 0 .IP \fBnosectionheader\fP 4 .IX عنصر nosectionheader .PD يولد ترويسة القسم. لا تولد ترويسة القسم إذا استُخدم \&\fBnosectionheader\fP. يعد \fBsectionheader\fP هو المبدئي. .IP \fBseparate\-code\fP 4 .IX عنصر separate\-code .PD 0 .IP \fBnoseparate\-code\fP 4 .IX عنصر noseparate\-code .PD ينشئ ترويسة قطعة كود \f(CW\*(C`PT_LOAD\*(C'\fP منفصلة في الكائن. يحدد هذا قطعة ذاكرة ينبغي أن تحتوي على تعليمات فقط و يجب أن تكون في صفحات منفصلة تماماً عن أي بيانات أخرى. لا تنشئ قطعة كود \f(CW\*(C`PT_LOAD\*(C'\fP منفصلة إذا استُخدم \fBnoseparate\-code\fP. .IP \fBshstk\fP 4 .IX عنصر shstk ولد GNU_PROPERTY_X86_FEATURE_1_SHSTK في قسم .note.gnu.property للإشارة إلى التوافق مع Intel Shadow Stack. مدعوم لأنظمة Linux/i386 و Linux/x86_64. .IP \fBstack\-size=\fP\fIقيمة\fP 4 .IX عنصر stack\-size=قيمة تحديد حجم المكدس (stack size) لقطاع ELF من نوع \f(CW\*(C`PT_GNU_STACK\*(C'\fP. تحديد القيمة صفر سيؤدي إلى تجاوز أي إنشاء افتراضي لقطاع \&\f(CW\*(C`PT_GNU_STACK\*(C'\fP بحجم غير صفري. .IP \fBstart\-stop\-gc\fP 4 .IX عنصر start\-stop\-gc .PD 0 .IP \fBnostart\-stop\-gc\fP 4 .IX عنصر nostart\-stop\-gc .PD عندما يكون \fB\-\-gc\-sections\fP قيد التنفيذ، فإن الإشارة من قسم مُحتفظ به إلى \f(CW\*(C`_\|_start_SECNAME\*(C'\fP أو \f(CW\*(C`_\|_stop_SECNAME\*(C'\fP تؤدي إلى الاحتفاظ بكافة أقسام المدخلات المسماة \f(CW\*(C`SECNAME\*(C'\fP أيضًا، إذا كان \&\f(CW\*(C`SECNAME\*(C'\fP قابلاً للتمثيل كمعرف C وكان أي من \&\f(CW\*(C`_\|_start_SECNAME\*(C'\fP أو \&\f(CW\*(C`_\|_stop_SECNAME\*(C'\fP قد صُنّع بواسطة المرابط. يُعطل \fB\-z start\-stop\-gc\fP هذا التأثير، مما يسمح بجمع الأقسام كمهملات كما لو أن الرموز المصنعة الخاصة لم تُعرف. ليس لـ \fB\-z start\-stop\-gc\fP أي تأثير على تعريف \f(CW\*(C`_\|_start_SECNAME\*(C'\fP أو \f(CW\*(C`_\|_stop_SECNAME\*(C'\fP في ملف كائن أو نص برمج للمرابط. سيمنع مثل هذا التعريف المرابط من تقديم \f(CW\*(C`_\|_start_SECNAME\*(C'\fP أو \&\f(CW\*(C`_\|_stop_SECNAME\*(C'\fP مصنعين على التوالي، وبالتالي يمنع المعاملة الخاصة بواسطة جمع المهملات لتلك الإشارات. .IP \fBابدأ\-أوقف\-الظهور=\fP\fIقيمة\fP 4 .IX عنصر start\-stop\-visibility=قيمة يحدد ظهور رمز ELF لرموز \&\f(CW\*(C`_\|_start_SECNAME\*(C'\fP و \f(CW\*(C`_\|_stop_SECNAME\*(C'\fP المصنعة. يجب أن تكون \fIvalue\fP بالضبط \fBdefault\fP، أو \&\fBinternal\fP، أو \fBhidden\fP، أو \fBprotected\fP. إذا لم يُعطَ خيار \fB\-z start\-stop\-visibility\fP، تُستخدم \fBprotected\fP للتوافق مع الممارسة التاريخية. ومع ذلك، يوصى بشدة باستخدام \fB\-z start\-stop\-visibility=hidden\fP في البرامج الجديدة والمكتبات المشتركة بحيث لا تُصَدر هذه الرموز بين الكائنات المشتركة، وهو ما لا يكون مقصوداً في العادة. .IP \fBtext\fP 4 .IX عنصر text .PD 0 .IP \fBnotext\fP 4 .IX عنصر notext .IP \fBtextoff\fP 4 .IX عنصر textoff .PD يُبلغ عن خطأ إذا ضُبط DT_TEXTREL، أي إذا كان الكائن المستقل عن الموقع أو المشترك يحتوي على عمليات إعادة توطين ديناميكية في أقسام للقراءة فقط. لا يُبلغ عن خطأ إذا استُخدم \fBnotext\fP أو \fBtextoff\fP. .IP \fBundefs\fP 4 .IX عنصر undefs لا تبلغ عن مراجع الرموز غير المحلولة من ملفات الكائنات العادية، سواء عند إنشاء ملف تنفيذي أو عند إنشاء مكتبة مشتركة. هذا الخيار هو عكس \fB\-z defs\fP. .IP \fBunique\-symbol\fP 4 .IX عنصر unique\-symbol .PD 0 .IP \fBnounique\-symbol\fP 4 .IX عنصر nounique\-symbol .PD تجنب أسماء الرموز المحلية المكررة في جدول سلاسل الرموز. ألحق ".\f(CW\*(C`number\*(C'\fP" بأسماء الرموز المحلية المكررة إذا استُخدِم \fBunique\-symbol\fP. السلوك المبدئي هو \fBnounique\-symbol\fP. .IP \fBx86\-64\-baseline\fP 4 .IX عنصر x86\-64\-baseline .PD 0 .IP \fBx86\-64\-v2\fP 4 .IX عنصر x86\-64\-v2 .IP \fBx86\-64\-v3\fP 4 .IX عنصر x86\-64\-v3 .IP \fBx86\-64\-v4\fP 4 .IX عنصر x86\-64\-v4 .PD تحديد مستوى x86\-64 ISA المطلوب في قسم \&.note.gnu.property. \&\fBx86\-64\-baseline\fP يولد \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_BASELINE\*(C'\fP. \&\fBx86\-64\-v2\fP يولد \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V2\*(C'\fP. \&\fBx86\-64\-v3\fP يولد \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V3\*(C'\fP. \&\fBx86\-64\-v4\fP يولد \f(CW\*(C`GNU_PROPERTY_X86_ISA_1_V4\*(C'\fP. مدعوم لأنظمة Linux/i386 و Linux/x86_64. .IP \fBisa\-level\-report=none\fP 4 .IX عنصر isa\-level\-report=none .PD 0 .IP \fBisa\-level\-report=all\fP 4 .IX عنصر isa\-level\-report=all .IP \fBisa\-level\-report=needed\fP 4 .IX عنصر isa\-level\-report=needed .IP \fBisa\-level\-report=used\fP 4 .IX عنصر isa\-level\-report=used .PD تحديد كيفية الإبلاغ عن مستويات x86\-64 ISA في ملفات الإدخال القابلة لإعادة التوطين. \&\fBisa\-level\-report=none\fP، وهو الافتراضي، سيجعل الرابط لا يبلغ عن مستويات x86\-64 ISA في ملفات الإدخال. \&\fBisa\-level\-report=all\fP سيجعل الرابط يبلغ عن مستويات x86\-64 ISA المطلوبة والمستخدمة في ملفات الإدخال. \&\fBisa\-level\-report=needed\fP سيجعل الرابط يبلغ عن مستويات x86\-64 ISA المطلوبة في ملفات الإدخال. \&\fBisa\-level\-report=used\fP سيجعل الرابط يبلغ عن مستويات x86\-64 ISA المستخدمة في ملفات الإدخال. مدعوم لأنظمة Linux/i386 و Linux/x86_64. .RE .RS 4 .Sp تُتجاهل الكلمات المفتاحية الأخرى للتوافق مع Solaris. .RE .IP \fB\-\-gnu\-tls\-tag\fP 4 .IX عنصر \-\-gnu\-tls\-tag .PD 0 .IP \fB\-\-no\-gnu\-tls\-tag\fP 4 .IX عنصر \-\-no\-gnu\-tls\-tag .PD يضيف تبعية وسم إصدار \f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fP في برامج المخرج والمكتبات المشتركة عند الربط ضد glibc إذا كانت ملفات كائنات المدخلات القابلة لإعادة التوطين تستدعي \f(CW\*(C`_\|_\|_tls_get_addr\*(C'\fP. سيفشل المخرج في التحميل والتشغيل في وقت التشغيل ضد glibc التي لا تعرف وسم إصدار \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fP. ما لم يُعطل بواسطة خيار الضبط \&\fB\-\-disable\-gnu\-tls\-tag\fP في وقت بناء الرابط، عندما لا تُحدد أي خيارات، سيضيف الرابط تبعية وسم إصدار \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fP إذا كانت المدخلات تحتوي على استدعاء \&\f(CW\*(C`_\|_\|_tls_get_addr\*(C'\fP و libc.so تعرف وسم إصدار \&\f(CW\*(C`GLIBC_ABI_GNU_TLS\*(C'\fP. مدعوم لـ Linux/i386. .IP \fB\-\-gnu2\-tls\-tag\fP 4 .IX عنصر \-\-gnu2\-tls\-tag .PD 0 .IP \fB\-\-no\-gnu2\-tls\-tag\fP 4 .IX عنصر \-\-no\-gnu2\-tls\-tag .PD يضيف تبعية وسم إصدار \f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fP في برامج المخرج والمكتبات المشتركة عند الربط ضد glibc إذا كانت ملفات كائنات المدخلات القابلة لإعادة التوطين تحتوي على إعادة توطين \f(CW\*(C`R_386_TLS_DESC_CALL\*(C'\fP أو \&\f(CW\*(C`R_X86_64_TLSDESC_CALL\*(C'\fP. سيفشل المخرج في التحميل والتشغيل في وقت التشغيل ضد glibc التي لا تعرف وسم إصدار \&\f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fP. ما لم يُعطل بواسطة خيار \&\fB\-\-disable\-gnu2\-tls\-tag\fP عند وقت بناء الرابط، عندما لا تُحدد أي خيارات، سيضيف الرابط تبعية وسم إصدار \&\f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fP إذا كانت المدخلات تحتوي على إعادة توطين \&\f(CW\*(C`R_386_TLS_DESC_CALL\*(C'\fP أو \f(CW\*(C`R_X86_64_TLSDESC_CALL\*(C'\fP و libc.so تعرف وسم إصدار \f(CW\*(C`GLIBC_ABI_GNU2_TLS\*(C'\fP. مدعوم لـ Linux/i386 و Linux/x86_64. .IP "\fB\-(\fP \fIarchives\fP \fB\-)\fP" 4 .IX عنصر "\-( أرشيفات \-)" .PD 0 .IP "\fB\-\-start\-group\fP \fIالأرشيفات\fP \fB\-\-end\-group\fP" 4 .IX عنصر "\-\-start\-group الأرشيفات \-\-end\-group" .PD يجب أن تكون الـ \fIأرشيفات\fP قائمة بملفات الأرشيف. قد تكون إما أسماء ملفات صريحة، أو خيارات \fB\-l\fP. .Sp يُبحث في الأرشيفات المحددة بشكل متكرر حتى لا تُنشأ مراجع جديدة غير محددة. عادةً، يُبحث في الأرشيف مرة واحدة فقط بالترتيب الذي حُدد به على سطر الأوامر. إذا لزم رمز في ذلك الأرشيف لحل رمز غير محدد يشير إليه كائن في أرشيف يظهر لاحقاً على سطر الأوامر، فلن يتمكن الرابط من حل ذلك المرجع. وعن طريق تجميع الأرشيفات، سيُبحث فيها جميعاً بشكل متكرر حتى تُحل جميع المراجع الممكنة. .Sp استخدام هذا الخيار له تكلفة أداء كبيرة. من الأفضل استخدامه فقط عندما تكون هناك مراجع دائرية لا يمكن تجنبها بين أرشيفين أو أكثر. .IP \fB\-\-accept\-unknown\-input\-arch\fP 4 .IX عنصر \-\-accept\-unknown\-input\-arch .PD 0 .IP \fB\-\-no\-accept\-unknown\-input\-arch\fP 4 .IX عنصر \-\-no\-accept\-unknown\-input\-arch .PD يخبر الرابط بقبول ملفات الإدخال التي لا يمكن التعرف على معماريتها. الافتراض هو أن المستخدم يعرف ما يفعله ويريد عمداً ربط ملفات الإدخال المجهولة هذه. كان هذا هو السلوك الافتراضي للرابط قبل الإصدار 2.14. السلوك الافتراضي من الإصدار 2.14 فصاعداً هو رفض مثل هذه الملفات، لذا تمت إضافة الخيار \fB\-\-accept\-unknown\-input\-arch\fP لاستعادة السلوك القديم. .IP \fB\-\-as\-needed\fP 4 .IX عنصر \-\-as\-needed .PD 0 .IP \fB\-\-no\-as\-needed\fP 4 .IX عنصر \-\-no\-as\-needed .PD يؤثر هذا الخيار على وسوم ELF DT_NEEDED للمكتبات الحيوية المذكورة في سطر الأوامر بعد الخيار \fB\-\-as\-needed\fP. عادةً ما يضيف الموصل وسم DT_NEEDED لكل مكتبة حيوية مذكورة في سطر الأوامر، بغض النظر عما إذا كانت المكتبة مطلوبة بالفعل أم لا. يؤدي \fB\-\-as\-needed\fP إلى إصدار وسم DT_NEEDED فقط للمكتبة التي \fIعند تلك النقطة في الوصل\fP تستوفي مرجع رمز غير معرف وغير ضعيف من ملف كائن عادي أو، إذا لم تكن المكتبة موجودة في قوائم DT_NEEDED للمكتبات الأخرى المطلوبة، مرجع رمز غير معرف وغير ضعيف من مكتبة حيوية أخرى مطلوبة. لا تؤثر ملفات الكائنات أو المكتبات التي تظهر في سطر الأوامر \fIبعد\fP المكتبة المعنية على ما إذا كانت المكتبة تُرى كمطلوبة. هذا مشابه لقواعد استخراج ملفات الكائنات من الأرشيفات. يستعيد \fB\-\-no\-as\-needed\fP السلوك المبدئي. .Sp ملاحظة: في الأنظمة القائمة على لينكس، يؤثر خيار \fB\-\-as\-needed\fP أيضًا على سلوك الخيارين \fB\-\-rpath\fP و \&\fB\-\-rpath\-link\fP. راجع وصف \&\fB\-\-rpath\-link\fP لمزيد من التفاصيل. .IP \fB\-\-add\-needed\fP 4 .IX عنصر \-\-add\-needed .PD 0 .IP \fB\-\-no\-add\-needed\fP 4 .IX عنصر \-\-no\-add\-needed .PD هُجر هذان الخياران بسبب تشابه أسمائهما مع الخيارين \fB\-\-as\-needed\fP و \fB\-\-no\-as\-needed\fP. وقد استُبدلا بـ \fB\-\-copy\-dt\-needed\-entries\fP و \fB\-\-no\-copy\-dt\-needed\-entries\fP. .IP "\fB\-assert\fP \fIكلمة_مفتاحية\fP" 4 .IX عنصر "\-assert كلمة_مفتاحية" يُتجاهل هذا الخيار من أجل التوافقية مع SunOS. .IP \fB\-Bdynamic\fP 4 .IX عنصر \-Bdynamic .PD 0 .IP \fB\-dy\fP 4 .IX عنصر \-dy .IP \fB\-call_shared\fP 4 .IX عنصر \-call_shared .PD الربط مع المكتبات الديناميكية. هذا ذو معنى فقط على المنصات التي تدعم المكتبات المشتركة. هذا الخيار هو المبدئي عادةً على هذه المنصات. المتغيرات المختلفة لهذا الخيار هي للتوافق مع الأنظمة المختلفة. يمكنك استخدام هذا الخيار عدة مرات في سطر الأوامر: فهو يؤثر على البحث عن المكتبات لخيارات \&\fB\-l\fP التي تليه. .IP \fB\-Bgroup\fP 4 .IX عنصر \-Bgroup اضبط علم \f(CW\*(C`DF_1_GROUP\*(C'\fP في مدخلة \f(CW\*(C`DT_FLAGS_1\*(C'\fP في القسم الديناميكي. يؤدي هذا إلى جعل موصل وقت التشغيل يعالج عمليات البحث في هذا الكائن وتوابعه بحيث تُنفذ فقط داخل المجموعة. يُفترض استخدام \&\fB\-\-unresolved\-symbols=report\-all\fP. هذا الخيار ذو معنى فقط على منصات ELF التي تدعم المكتبات المشتركة. .IP \fB\-Bstatic\fP 4 .IX عنصر \-Bstatic .PD 0 .IP \fB\-dn\fP 4 .IX عنصر \-dn .IP \fB\-non_shared\fP 4 .IX عنصر \-non_shared .IP \fB\-static\fP 4 .IX عنصر \-static .PD لا يربط ضد المكتبات المشتركة. هذا ذو معنى فقط على المنصات التي تدعم المكتبات المشتركة. المتغيرات المختلفة لهذا الخيار هي للتوافق مع الأنظمة المتنوعة. يمكنك استخدام هذا الخيار مرات متعددة في سطر الأوامر: فهو يؤثر على البحث عن المكتبات لخيارات \fB\-l\fP التي تليها. يتضمن هذا الخيار أيضاً \fB\-\-unresolved\-symbols=report\-all\fP. يمكن استخدام هذا الخيار مع \fB\-shared\fP. القيام بذلك يعني أنه يجري إنشاء مكتبة مشتركة ولكن يجب حل جميع المراجع الخارجية للمكتبة من خلال سحب المدخلات من المكتبات الساكنة. .IP \fB\-Bsymbolic\fP 4 .IX عنصر \-Bsymbolic عند إنشاء مكتبة مشتركة، اربط الإشارات إلى الرموز العامة بالتعريف داخل المكتبة المشتركة، إن وجد. عادةً، يمكن للبرنامج المربوط بمكتبة مشتركة أن يتجاوز التعريف الموجود داخل المكتبة المشتركة. هذا الخيار ذو معنى فقط على منصات ELF التي تدعم المكتبات المشتركة. .IP \fB\-Bsymbolic\-functions\fP 4 .IX عنصر \-Bsymbolic\-functions عند إنشاء مكتبة مشتركة، اربط الإشارات إلى رموز الوظائف العامة بالتعريف داخل المكتبة المشتركة، إن وجد. هذا الخيار ذو معنى فقط على منصات ELF التي تدعم المكتبات المشتركة. .IP \fB\-Bno\-symbolic\fP 4 .IX عنصر \-Bno\-symbolic يمكن لهذا الخيار إلغاء \fB\-Bsymbolic\fP و \&\fB\-Bsymbolic\-functions\fP المحددين مسبقًا. .IP \fB\-\-dynamic\-list=\fP\fIملف\-القائمة\-الديناميكية\fP 4 .IX عنصر \-\-dynamic\-list=ملف_القائمة_الديناميكية يحدد اسم ملف قائمة ديناميكية للرابط. يستخدم هذا عادةً عند إنشاء مكتبات مشتركة لتحديد قائمة بالرموز العامة التي لا ينبغي ربط مراجعها بالتعريف الموجود داخل المكتبة المشتركة، أو إنشاء ملفات تنفيذية مرتبطة ديناميكياً لتحديد قائمة بالرموز التي ينبغي إضافتها إلى جدول الرموز في الملف التنفيذي. هذا الخيار ذو معنى فقط على منصات ELF التي تدعم المكتبات المشتركة. .Sp تنسيق القائمة الديناميكية هو نفسه عقدة الإصدار بدون نطاق واسم عقدة. انظر \fBVERSION\fP لمزيد من المعلومات. .IP \fB\-\-dynamic\-list\-data\fP 4 .IX عنصر \-\-dynamic\-list\-data تضمين جميع رموز البيانات العامة في القائمة الديناميكية. .IP \fB\-\-dynamic\-list\-cpp\-new\fP 4 .IX عنصر \-\-dynamic\-list\-cpp\-new توفير القائمة الديناميكية المدمجة لعامل C++ الجديد (new) والحذف (delete). مفيد بشكل رئيس لبناء libstdc++ المشتركة. .IP \fB\-\-dynamic\-list\-cpp\-typeinfo\fP 4 .IX عنصر \-\-dynamic\-list\-cpp\-typeinfo توفير القائمة الديناميكية المدمجة لتعريف نوع وقت التشغيل في C++. .IP \fB\-\-check\-sections\fP 4 .IX عنصر \-\-check\-sections .PD 0 .IP \fB\-\-no\-check\-sections\fP 4 .IX عنصر \-\-no\-check\-sections .PD يطلب من الواصل \fIعدم\fP فحص عناوين الأقسام بعد تعيينها لمعرفة ما إذا كان هناك أي تداخلات. عادةً ما يقوم الواصل بهذا الفحص، وإذا وجد أي تداخلات فإنه ينتج رسائل خطأ مناسبة. يعرف الواصل بشأن الأقسام في التراكبات ويراعيها. يمكن استعادة السلوك المبدئي باستخدام مفتاح سطر الأوامر \fB\-\-check\-sections\fP. لا يُفحص تداخل الأقسام عادةً في الوصلات القابلة لإعادة التوطين. يمكنك فرض الفحص في تلك الحالة باستخدام خيار \fB\-\-check\-sections\fP. .IP \fB\-\-copy\-dt\-needed\-entries\fP 4 .IX عنصر \-\-copy\-dt\-needed\-entries .PD 0 .IP \fB\-\-no\-copy\-dt\-needed\-entries\fP 4 .IX عنصر \-\-no\-copy\-dt\-needed\-entries .PD يؤثر هذا الخيار على معالجة المكتبات الديناميكية المشار إليها بواسطة وسوم DT_NEEDED \fIداخل\fP مكتبات ELF الديناميكية المذكورة في سطر الأوامر. عادة لا يضيف الرابط وسم DT_NEEDED إلى الثنائي المخرج لكل مكتبة مذكورة في وسم DT_NEEDED في مكتبة ديناميكية مدخلة. لكن مع تحديد \fB\-\-copy\-dt\-needed\-entries\fP في سطر الأوامر، فإن أي مكتبات ديناميكية تليها ستُضاف مدخلات DT_NEEDED الخاصة بها. يمكن استعادة السلوك المبدئي باستخدام \fB\-\-no\-copy\-dt\-needed\-entries\fP. .Sp يؤثر هذا الخيار أيضًا على حل الرموز في المكتبات الحيوية. مع \fB\-\-copy\-dt\-needed\-entries\fP، سيُبحث في المكتبات الحيوية المذكورة في سطر الأوامر بشكل تكراري، متبعًا وسوم DT_NEEDED الخاصة بها إلى مكتبات أخرى، من أجل حل الرموز التي يتطلبها الثنائي المخرج. ومع ذلك، فمع الإعداد المبدئي، سيتوقف البحث في المكتبات الحيوية عند المكتبة الحيوية نفسها. لن تُجتاز أي روابط DT_NEEDED لحل الرموز. .IP \fB\-\-cref\fP 4 .IX عنصر \-\-cref أخرج جدول مراجع مرجعية. إذا كان ملف خريطة الرابط قيد التوليد، يُطبع جدول المراجع المرجعية في ملف الخريطة. وإلا، يُطبع على المخرج القياسي. .Sp تنسيق الجدول بسيط عمدًا، بحيث يمكن معالجته بسهولة بواسطة سكربت إذا لزم الأمر. تُطبع الرموز مرتبة حسب الاسم. لكل رمز، يتم تقديم قائمة بأسماء الملفات. إذا كان الرمز معرفًا، فإن الملف الأول المذكور هو موقع التعريف. إذا تم تعريف الرمز كقيمة مشتركة، تظهر أي ملفات يحدث فيها ذلك تالياً. أخيرًا، تُدرج أي ملفات تشير إلى الرمز. .IP \fB\-\-ctf\-variables\fP 4 .IX عنصر \-\-ctf\-variables .PD 0 .IP \fB\-\-no\-ctf\-variables\fP 4 .IX عنصر \-\-no\-ctf\-variables .PD تدعم صيغة معلومات التنقيب CTF قسمًا يرمز أسماء وأنواع المتغيرات الموجودة في البرنامج والتي لا تظهر في أي جدول رموز. من الواضح أنه لا يمكن البحث عن هذه المتغيرات بالعنوان بواسطة المنقحات التقليدية، لذا فإن المساحة المستخدمة لأنواعها وأسمائها تضيع عادةً: الأنواع صغيرة عادةً ولكن الأسماء غالبًا ليست كذلك. يتسبب \&\fB\-\-ctf\-variables\fP في توليد مثل هذا القسم. يمكن استعادة السلوك المبدئي باستخدام \fB\-\-no\-ctf\-variables\fP. .IP \fB\-\-ctf\-share\-types=\fP\fIطريقة\fP 4 .IX عنصر \-\-ctf\-share\-types=الطريقة اضبط الطريقة المستخدمة لمشاركة الأنواع بين وحدات الترجمة في CTF. .RS 4 .IP \fBshare\-unconflicted\fP 4 .IX عنصر share\-unconflicted وضع جميع الأنواع التي لا تملك تعريفات غامضة في القاموس المشترك، حيث يمكن لمنقعات الأخطاء الوصول إليها بسهولة، حتى لو ظهرت في وحدة ترجمة واحدة فقط. هذا هو المبدئي. .IP \fBshare\-duplicated\fP 4 .IX عنصر share\-duplicated وضع الأنواع التي تظهر في وحدات ترجمة متعددة فقط في القاموس المشترك: الأنواع ذات التعريف الواحد تذهب إلى قواميس كل وحدة ترجمة. الأنواع ذات التعريفات الغامضة في وحدات ترجمة متعددة تذهب دائمًا إلى قواميس كل وحدة ترجمة. يميل هذا لجعل CTF أكبر، ولكنه قد يقلل من كمية CTF في القاموس المشترك. بالنسبة للمشاريع الكبيرة جدًا، قد يسرع هذا فتح CTF ويوفر الذاكرة في مستهلك CTF وقت التشغيل. .RE .RS 4 .RE .IP \fB\-\-no\-define\-common\fP 4 .IX عنصر \-\-no\-define\-common يمنع هذا الخيار تعيين العناوين للرموز المشتركة. أمر السيناريو \f(CW\*(C`INHIBIT_COMMON_ALLOCATION\*(C'\fP له نفس التأثير. .Sp يسمح الخيار \fB\-\-no\-define\-common\fP بفصل قرار تعيين العناوين للرموز المشتركة عن اختيار نوع ملف المخرجات؛ وإلا فإن نوع المخرجات غير القابل للنقل يفرض تعيين العناوين للرموز المشتركة. يسمح استخدام \fB\-\-no\-define\-common\fP للرموز المشتركة التي يُشار إليها من مكتبة مشتركة بأن تُعين لها عناوين في البرنامج الرئيس فقط. هذا يزيل المساحة المكررة غير المستخدمة في المكتبة المشتركة، ويمنع أيضًا أي ارتباك محتمل حول الحل إلى النسخة المكررة الخاطئة عندما يكون هناك العديد من الوحدات الديناميكية ذات مسارات بحث متخصصة لحل الرموز في وقت التشغيل. .IP \fB\-\-force\-group\-allocation\fP 4 .IX عنصر \-\-force\-group\-allocation يؤدي هذا الخيار إلى قيام الموصل بوضع أعضاء مجموعة الأقسام مثل أقسام المدخلات العادية، وحذف مجموعات الأقسام. هذا هو السلوك المبدئي للوصل النهائي ولكن يمكن استخدام هذا الخيار لتغيير سلوك الوصل القابل لإعادة التوطين (\fB\-r\fP). أمر السيناريو \f(CW\*(C`FORCE_GROUP_ALLOCATION\*(C'\fP له نفس التأثير. .IP \fB\-\-defsym=\fP\fIرمز\fP\fB=\fP\fIتعبير\fP 4 .IX عنصر \-\-defsym=الرمز=التعبير أنشئ رمزًا عالميًا في ملف الخرج، يحتوي على العنوان المطلق المعطى بواسطة \fIexpression\fP. يمكنك استخدام هذا الخيار قدر الضرورة لتعريف رموز متعددة في سطر الأوامر. يُدعم شكل محدود من الحساب للتعبير \fIexpression\fP في هذا السياق: يمكنك إعطاء ثابت ست عشري أو اسم رمز موجود، أو استخدام \f(CW\*(C`+\*(C'\fP و \f(CW\*(C`\-\*(C'\fP لجمع أو طرح ثوابت أو رموز ست عشرية. إذا كنت بحاجة لتعبيرات أكثر تعقيدًا، فكر في استخدام لغة أوامر الموصل من نص برمجي. \&\fIملاحظة:\fP يجب ألا توجد مسافات بيضاء بين الرمز \fIsymbol\fP، وعلامة التساوي ("\fB=\fP")، والتعبير \fIexpression\fP. .Sp يعالج الرابط وسائط \fB\-\-defsym\fP ووسائط \fB\-T\fP بالترتيب، فوضع \fB\-\-defsym\fP قبل \fB\-T\fP سيعرف الرمز قبل معالجة سكريبت الرابط من \fB\-T\fP، بينما وضع \fB\-\-defsym\fP بعد \fB\-T\fP سيعرف الرمز بعد معالجة سكريبت الرابط. هذا الاختلاف له عواقب على التعبيرات داخل سكريبت الرابط التي تستخدم رموز \&\fB\-\-defsym\fP، والترتيب الصحيح يعتمد على ما تحاول تحقيقه. .IP \fB\-\-demangle[=\fP\fIstyle\fP\fB]\fP 4 .IX عنصر \-\-demangle[=نمط] .PD 0 .IP \fB\-\-no\-demangle\fP 4 .IX عنصر \-\-no\-demangle .PD تتحكم هذه الخيارات فيما إذا كان سيُفك تشويه أسماء الرموز في رسائل الخطأ والمخرجات الأخرى. عندما يُطلب من الرابط فك التشويه، فإنه يحاول تقديم أسماء الرموز بطريقة مقروءة: فهو يزيل الشرطات السفلية البادئة إذا كانت مستخدمة في تنسيق ملف الكائن، ويحول أسماء رموز C++ المشوهة إلى أسماء مقروءة للمستخدم. المترجمات المختلفة لها أنماط تشويه مختلفة. يمكن استخدام معامل نمط فك التشويه الاختياري لاختيار نمط فك تشويه مناسب لمترجمك. سيقوم الرابط بفك التشويه مبدئيًا ما لم يُضبط متغير البيئة \fBCOLLECT_NO_DEMANGLE\fP. يمكن استخدام هذه الخيارات لتجاوز الوضع المبدئي. .IP \fB\-I\fP\fIملف\fP 4 .IX عنصر \-Ifile .PD 0 .IP \fB\-\-dynamic\-linker=\fP\fIملف\fP 4 .IX عنصر \-\-dynamic\-linker=الملف .PD يضبط اسم الرابط الديناميكي. هذا ذو معنى فقط عند توليد ملفات تنفيذية مرتبطة ديناميكياً بتنسيق ELF. الرابط الديناميكي المبدئي صحيح في العادة؛ لا تستخدم هذا ما لم تكن تعرف ما تفعله. .IP \fB\-\-no\-dynamic\-linker\fP 4 .IX عنصر \-\-no\-dynamic\-linker عند إنتاج ملف تنفيذي، احذف طلب استخدام مرابط ديناميكي في وقت التحميل. هذا ذو معنى فقط لملفات ELF التنفيذية التي تحتوي على عمليات إعادة توطين ديناميكية، ويتطلب عادةً كودًا لنقطة الدخول قادرًا على معالجة عمليات إعادة التوطين هذه. .IP \fB\-\-embedded\-relocs\fP 4 .IX عنصر \-\-embedded\-relocs يشبه هذا الخيار خيار \fB\-\-emit\-relocs\fP باستثناء أن عمليات إعادة التوطين (relocs) تُخزن في قسم خاص بالهدف. هذا الخيار مدعوم فقط من قبل أهداف \fBBFIN\fP و \fBCR16\fP و \fIM68K\fP. .IP \fB\-\-disable\-multiple\-abs\-defs\fP 4 .IX عنصر \-\-disable\-multiple\-abs\-defs لا تسمح بتعريفات متعددة برموز مدرجة في اسم الملف المستدعى بواسطة \-R أو \-\-just\-symbols .IP \fB\-\-fatal\-warnings\fP 4 .IX عنصر \-\-fatal\-warnings .PD 0 .IP \fB\-\-no\-fatal\-warnings\fP 4 .IX عنصر \-\-no\-fatal\-warnings .PD عامل كل التحذيرات كأخطاء. يمكن استعادة السلوك المبدئي عبر الخيار \fB\-\-no\-fatal\-warnings\fP. .IP \fB\-w\fP 4 .IX عنصر \-w .PD 0 .IP \fB\-\-no\-warnings\fP 4 .IX عنصر \-\-no\-warnings .PD لا تعرض أي رسائل تحذير أو خطأ. يتجاوز هذا \&\fB\-\-fatal\-warnings\fP إذا كان مفعلاً. يمكن استخدام هذا الخيار عندما يكون معروفاً أن الملف الثنائي الناتج لن يعمل، ولكن لا تزال هناك حاجة لإنشائه. .IP \fB\-\-force\-exe\-suffix\fP 4 .IX عنصر \-\-force\-exe\-suffix التأكد من أن ملف المخرجات له اللاحقة .exe. .Sp إذا كان ملف المخرج المرتبط بالكامل والمبني بنجاح لا يملك لاحقة \&\f(CW\*(C`.exe\*(C'\fP أو \f(CW\*(C`.dll\*(C'\fP، فإن هذا الخيار يجبر الرابط على نسخ ملف المخرج إلى ملف بنفس الاسم مع لاحقة \f(CW\*(C`.exe\*(C'\fP. هذا الخيار مفيد عند استخدام ملفات makefile يونكس غير المعدلة على مضيف Microsoft Windows، حيث إن بعض إصدارات Windows لن تشغل صورة ما لم تنتهِ بلاحقة \f(CW\*(C`.exe\*(C'\fP. .IP \fB\-\-gc\-sections\fP 4 .IX عنصر \-\-gc\-sections .PD 0 .IP \fB\-\-no\-gc\-sections\fP 4 .IX عنصر \-\-no\-gc\-sections .PD تفعيل جمع المهملات لأقسام الإدخال غير المستخدمة. يتم تجاهله في الأهداف التي لا تدعم هذا الخيار. السلوك الافتراضي (عدم إجراء جمع المهملات هذا) يمكن استعادته بتحديد \&\fB\-\-no\-gc\-sections\fP في سطر الأوامر. لاحظ أن جمع المهملات لأهداف تنسيق COFF و PE مدعوم، ولكن التنفيذ يعتبر حاليًا تجريبيًا. .Sp \&\fB\-\-gc\-sections\fP يقرر أي أقسام المدخلات تُستخدم عبر فحص الرموز وعمليات إعادة التوطين. يُحتفظ بالقسم الذي يحتوي على رمز الإدخال وجميع الأقسام التي تحتوي على رموز غير معرفة في سطر الأوامر، كما يُحتفظ بالأقسام التي تحتوي على رموز مرجعية بواسطة كائنات ديناميكية. لاحظ أنه عند بناء مكتبات مشتركة، يجب على الرابط أن يفترض أن أي رمز مرئي هو مرجعي. بمجرد تحديد هذه المجموعة الأولية من الأقسام، يقوم الرابط بشكل تكراري بوسم أي قسم مرجعي بواسطة عمليات إعادة التوطين الخاصة بها كقسم مُستخدم. انظر \fB\-\-entry\fP، و \fB\-\-undefined\fP، و \&\fB\-\-gc\-keep\-exported\fP. .Sp يمكن ضبط هذا الخيار عند إجراء وصل جزئي (يُمكّن بالخيار \&\fB\-r\fP). في هذه الحالة، يجب تحديد جذر الرموز المحتفظ بها صراحةً إما عن طريق أحد الخيارات \fB\-\-entry\fP، أو \&\fB\-\-undefined\fP، أو \fB\-\-gc\-keep\-exported\fP أو عن طريق أمر \f(CW\*(C`ENTRY\*(C'\fP في سيناريو الموصل. .Sp كامتداد لـ GNU، فإن أقسام مدخلات ELF المميزة بـ علامة \&\f(CW\*(C`SHF_GNU_RETAIN\*(C'\fP لن تُجمع كنفايات. .IP \fB\-\-print\-gc\-sections\fP 4 .IX عنصر \-\-print\-gc\-sections .PD 0 .IP \fB\-\-no\-print\-gc\-sections\fP 4 .IX عنصر \-\-no\-print\-gc\-sections .PD سرد كافة الأقسام التي تمت إزالتها بواسطة جامع المهملات. تُطبع القائمة على stderr. هذا الخيار فعال فقط إذا تم تمكين جمع المهملات عبر خيار \fB\-\-gc\-sections\fP). يمكن استعادة السلوك المبدئي (بعدم سرد الأقسام التي تمت إزالتها) بتحديد \fB\-\-no\-print\-gc\-sections\fP في سطر الأوامر. .IP \fB\-\-gc\-keep\-exported\fP 4 .IX عنصر \-\-gc\-keep\-exported عند تفعيل \fB\-\-gc\-sections\fP، يمنع هذا الخيار جمع المهملات لأقسام المدخلات غير المستخدمة التي تحتوي على رموز عامة لها رؤية مبدئية أو محمية. هذا الخيار مخصص للاستخدام مع الملفات التنفيذية حيث ستُجمع الأقسام غير المشار إليها كمهملات لولا ذلك، بغض النظر عن الرؤية الخارجية للرموز الموجودة بها. لاحظ أن هذا الخيار ليس له أي تأثير عند ربط الكائنات المشتركة لأنه السلوك المبدئي بالفعل. هذا الخيار مدعوم فقط لأهداف تنسيق ELF. .IP \fB\-\-print\-output\-format\fP 4 .IX عنصر \-\-print\-output\-format اطبع اسم تنسيق المخرج المبدئي (ربما يتأثر بخيارات سطر الأوامر الأخرى). هذه هي السلسلة التي ستظهر في أمر نصي للرابط \f(CW\*(C`OUTPUT_FORMAT\*(C'\fP. .IP \fB\-\-print\-memory\-usage\fP 4 .IX عنصر \-\-print\-memory\-usage اطبع الحجم المستخدم، والحجم الإجمالي، والحجم المستخدم لمناطق الذاكرة المنشأة باستخدام أمر \fBMEMORY\fP. هذا مفيد في الأهداف المدمجة للحصول على عرض سريع لمقدار الذاكرة الحرة. يحتوي تنسيق المخرج على عنوان رئيس وسطر واحد لكل منطقة. إنه قابل للقراءة من قبل البشر وسهل التحليل بواسطة الأدوات. إليك مثال على المخرج: .Sp .Vb 3 \& منطقة الذاكرة الحجم المستخدم حجم المنطقة نسبة الاستخدام \& ROM: 256 KB 1 MB 25.00% \& RAM: 32 B 2 GB 0.00% .Ve .Sp ملاحظة: إذا كنت تريد معرفة استهلاك الذاكرة للرابط نفسه، فإن خيار \fB\-\-stats\fP سيقوم بذلك. .IP \fB\-\-help\fP 4 .IX عنصر \-\-help اطبع ملخصاً لخيارات سطر الأوامر على المخرج القياسي واخرج. .IP \fB\-\-target\-help\fP 4 .IX عنصر \-\-target\-help اطبع ملخصاً لجميع الخيارات الخاصة بالهدف على المخرج القياسي واخرج. .IP \fB\-Map=\fP\fIملف_الخارطة\fP 4 .IX عنصر \-Map=mapfile اطبع خريطة ربط إلى الملف \fImapfile\fP. انظر وصف الخيار \&\fB\-M\fP أعلاه. إذا كان \fImapfile\fP هو مجرد المحرف \&\f(CW\*(C`\-\*(C'\fP فستكتب الخريطة في المخرج القياسي. .Sp يؤدي تحديد دليل كـ \fImapfile\fP إلى كتابة خريطة الرابط كملف داخل هذا الدليل. عادةً ما يتم حساب اسم الملف داخل الدليل كاسم أساسي لملف \fIoutput\fP مع إلحاق \f(CW\*(C`.map\*(C'\fP به. ومع ذلك، إذا تم استخدام المحرف الخاص \&\f(CW\*(C`%\*(C'\fP فسيتم استبداله بالمسار الكامل لملف الإخراج. بالإضافة إلى ذلك، إذا كانت هناك أي محارف بعد رمز \&\fI%\fP فلن يتم إلحاق \f(CW\*(C`.map\*(C'\fP بعد الآن. .Sp .Vb 10 \& \-o foo.exe \-Map=bar [يُنشئ ./bar] \& \-o ../dir/foo.exe \-Map=bar [يُنشئ ./bar] \& \-o foo.exe \-Map=../dir [يُنشئ ../dir/foo.exe.map] \& \-o ../dir2/foo.exe \-Map=../dir [يُنشئ ../dir/foo.exe.map] \& \-o foo.exe \-Map=% [يُنشئ ./foo.exe.map] \& \-o ../dir/foo.exe \-Map=% [يُنشئ ../dir/foo.exe.map] \& \-o foo.exe \-Map=%.bar [يُنشئ ./foo.exe.bar] \& \-o ../dir/foo.exe \-Map=%.bar [يُنشئ ../dir/foo.exe.bar] \& \-o ../dir2/foo.exe \-Map=../dir/% [يُنشئ ../dir/../dir2/foo.exe.map] \& \-o ../dir2/foo.exe \-Map=../dir/%.bar [يُنشئ ../dir/../dir2/foo.exe.bar] .Ve .Sp من الخطأ تحديد أكثر من محرف \f(CW\*(C`%\*(C'\fP واحد. .Sp إذا كان ملف الخريطة موجودًا بالفعل، فسيتم الكتابة فوقه بهذه العملية. .IP \fB\-\-no\-keep\-memory\fP 4 .IX عنصر \-\-no\-keep\-memory \&\fBld\fP عادة ما يحسن السرعة على حساب استخدام الذاكرة عبر تخبئة جداول الرموز لملفات المدخلات في الذاكرة. هذا الخيار يخبر \fBld\fP بدلاً من ذلك بالتحسين لاستخدام الذاكرة، عن طريق إعادة قراءة جداول الرموز حسب الضرورة. قد يكون هذا مطلوباً إذا نفدت مساحة الذاكرة من \fBld\fP أثناء ربط ملف تنفيذي كبير. .IP \fB\-\-no\-undefined\fP 4 .IX عنصر \-\-no\-undefined .PD 0 .IP "\fB\-z defs\fP" 4 .IX عنصر "\-z defs" .PD الإبلاغ عن مراجع الرموز غير المحلولة من ملفات الكائنات العادية. يتم ذلك حتى لو كان الرابط ينشئ مكتبة مشتركة غير رمزية. يتحكم المفتاح \fB\-\-[no\-]allow\-shlib\-undefined\fP في سلوك الإبلاغ عن المراجع غير المحلولة الموجودة في المكتبات المشتركة التي يتم ربطها. .Sp يمكن التراجع عن آثار هذا الخيار باستخدام \f(CW\*(C`\-z undefs\*(C'\fP. .IP \fB\-\-allow\-multiple\-definition\fP 4 .IX عنصر \-\-allow\-multiple\-definition .PD 0 .IP "\fB\-z muldefs\fP" 4 .IX عنصر "\-z muldefs" .PD عادةً ما يبلغ الرابط عن خطأ فادح عندما يُعرف رمز عدة مرات. تسمح هذه الخيارات بتعريفات متعددة وسيُستخدم التعريف الأول. .IP \fB\-\-allow\-shlib\-undefined\fP 4 .IX عنصر \-\-allow\-shlib\-undefined .PD 0 .IP \fB\-\-no\-allow\-shlib\-undefined\fP 4 .IX عنصر \-\-no\-allow\-shlib\-undefined .PD يسمح أو يمنع الرموز غير المعرفة في المكتبات المشتركة. هذا المفتاح مشابه لـ \fB\-\-no\-undefined\fP إلا أنه يحدد السلوك عندما تكون الرموز غير المعرفة في مكتبة مشتركة بدلاً من ملف كائن عادي. ولا يؤثر ذلك على كيفية التعامل مع الرموز غير المعرفة في ملفات الكائنات العادية. .Sp السلوك الافتراضي هو الإبلاغ عن أخطاء لأي رموز غير معرفة يُشار إليها في المكتبات المشتركة إذا كان الرابط يُستخدم لإنشاء ملف تنفيذي، ولكن السماح بها إذا كان الرابط يُستخدم لإنشاء مكتبة مشتركة. .Sp الأسباب للسماح بمراجع رموز غير محددة في المكتبات المشتركة المحددة في وقت الربط هي أن: .RS 4 .IP \(bu 4 المكتبة المشتركة المحددة في وقت الربط قد لا تكون هي نفسها المتوفرة في وقت التحميل، لذا قد يكون الرمز قابلاً للحل فعليًا في وقت التحميل. .IP \(bu 4 هناك بعض أنظمة التشغيل، مثل BeOS و HPPA، حيث تكون الرموز غير المعرفة في المكتبات المشتركة أمرًا طبيعيًا. .Sp على سبيل المثال، تقوم نواة BeOS بترقيع المكتبات المشتركة في وقت التحميل لاختيار الدالة الأكثر ملاءمة للبنية الحالية. يُستخدم هذا، على سبيل المثال، لاختيار دالة memset مناسبة ديناميكيًا. .RE .RS 4 .RE .IP \fB\-\-error\-handling\-script=\fP\fIاسم\-البريمج\fP 4 .IX عنصر \-\-error\-handling\-script=اسم_السكربت إذا قُدم هذا الخيار، فسيقوم الرابط باستدعاء \&\fIscriptname\fP كلما وُجد خطأ. ولكن حالياً، يُدعم نوعان فقط من الأخطاء: الرموز المفقودة والمكتبات المفقودة. سيُمرر وسيطان إلى السكربت: الكلمة المفتاحية "undefined\-symbol" أو "missing\-lib" و \fIname\fP الخاص بالرمز غير المعرف أو المكتبة المفقودة. القصد هو أن يقدم السكربت اقتراحات للمستخدم حول المكان الذي قد يوجد فيه الرمز أو المكتبة. بعد انتهاء السكربت، سيُعرض بلاغ خطأ الرابط العادي. .Sp يُتحكم في توفر هذا الخيار بواسطة مفتاح وقت الضبط، لذا قد لا يكون موجودًا في تنفيذات محددة. .IP \fB\-\-no\-undefined\-version\fP 4 .IX عنصر \-\-no\-undefined\-version عادةً ما يتجاهل الرابط الرمز عندما يكون له إصدار غير محدد. هذا الخيار يمنع الرموز ذات الإصدار غير المحدد وسيُصدر خطأ فادح بدلاً من ذلك. .IP \fB\-\-default\-symver\fP 4 .IX عنصر \-\-default\-symver أنشئ واستخدم نسخة رمز مبدئية (soname) للرموز المصدرة غير المزودة بنسخة. .IP \fB\-\-default\-imported\-symver\fP 4 .IX عنصر \-\-default\-imported\-symver أنشئ واستخدم نسخة رمز مبدئية (soname) للرموز المستوردة غير المزودة بنسخة. .IP \fB\-\-no\-warn\-mismatch\fP 4 .IX عنصر \-\-no\-warn\-mismatch عادةً ما يُصدر \fBld\fP خطأً إذا حاولت ربط ملفات مدخلات غير متطابقة لسبب ما، ربما لأنه جرى تصريفها لمعالجات مختلفة أو لترتيب بايتات (endiannesses) مختلف. يخبر هذا الخيار \fBld\fP بأنه يجب أن يسمح بمثل هذه الأخطاء المحتملة بصمت. يجب استخدام هذا الخيار بحذر فقط، في الحالات التي تكون قد اتخذت فيها إجراءً خاصًا يضمن أن أخطاء الرابط غير مناسبة. .IP \fB\-\-no\-warn\-search\-mismatch\fP 4 .IX عنصر \-\-no\-warn\-search\-mismatch عادةً ما يُصدر \fBld\fP تحذيرًا إذا وجد مكتبة غير متوافقة أثناء البحث عن المكتبات. هذا الخيار يُسكت هذا التحذير. .IP \fB\-\-no\-whole\-archive\fP 4 .IX عنصر \-\-no\-whole\-archive أوقف مفعول الخيار \fB\-\-whole\-archive\fP لملفات الأرشيف اللاحقة. .IP \fB\-\-noinhibit\-exec\fP 4 .IX عنصر \-\-noinhibit\-exec الاحتفاظ بملف المخرجات القابل للتنفيذ طالما أنه لا يزال صالحًا للاستخدام. عادةً، لن ينتج الرابط ملف مخرجات إذا واجه أخطاء أثناء عملية الربط؛ حيث يخرج دون كتابة ملف مخرجات عند إصدار أي خطأ مهما كان. .IP \fB\-nostdlib\fP 4 .IX عنصر \-nostdlib البحث في أدلة المكتبات المحددة صراحةً في سطر الأوامر فقط. ويتم تجاهل أدلة المكتبات المحددة في سكريبتات الرابط (بما في ذلك سكريبتات الرابط المحددة في سطر الأوامر). .IP \fB\-\-oformat=\fP\fIتنسيق\-المخرج\fP 4 .IX عنصر \-\-oformat=تنسيق_الإخراج قد يُضبط \&\fBld\fP لدعم أكثر من نوع من ملفات الكائنات. إذا ضُبط \fBld\fP بهذه الطريقة، فيمكنك استخدام خيار \&\fB\-\-oformat\fP لتحديد التنسيق الثنائي لملف الكائن المخرج. حتى عندما يُضبط \fBld\fP لدعم تنسيقات كائنات بديلة، فلا تحتاج عادةً لتحديد هذا، حيث ينبغي ضبط \fBld\fP لينتج كتنسيق مخرج مبدئي التنسيق الأكثر شيوعاً على كل حاسوب. \fIoutput\-format\fP هو سلسلة نصية، وهي اسم تنسيق معين تدعمه مكتبات BFD. (يمكنك سرد التنسيقات الثنائية المتاحة باستخدام \fBobjdump \-i\fP.) يمكن لأمر السكربت \f(CW\*(C`OUTPUT_FORMAT\*(C'\fP أيضاً تحديد تنسيق المخرج، ولكن هذا الخيار يتجاوزه. .IP "\fB\-\-out\-implib\fP \fIملف\fP" 4 .IX عنصر "\-\-out\-implib الملف" أنشئ مكتبة استيراد في \fIfile\fP تقابل الملف التنفيذي الذي يولده الموصل (مثل برنامج DLL أو ELF). مكتبة الاستيراد هذه (والتي يجب تسميتها \f(CW\*(C`*.dll.a\*(C'\fP أو \f(CW\*(C`*.a\*(C'\fP لملفات DLL) يمكن استخدامها لوصل العملاء بالملف التنفيذي المولد؛ هذا السلوك يجعل من الممكن تخطي خطوة إنشاء مكتبة استيراد منفصلة (مثل \f(CW\*(C`dlltool\*(C'\fP لملفات DLL). هذا الخيار متاح فقط لمنافذ الموصل المستهدفة لـ i386 PE و ELF. .IP \fB\-pie\fP 4 .IX عنصر \-pie .PD 0 .IP \fB\-\-pic\-executable\fP 4 .IX عنصر \-\-pic\-executable .PD أنشئ ملفًا تنفيذيًا مستقلاً عن الموضع. هذا مدعوم حاليًا فقط على منصات ELF. تُنقل الملفات التنفيذية المستقلة عن الموضع بواسطة الموصل الديناميكي إلى العنوان الافتراضي الذي يختاره نظام التشغيل لها، والذي قد يختلف بين الاستدعاءات. تُوسم بـ ET_DYN في ترويسة ملف ELF، لكنها تختلف عن المكتبات المشتركة بعدة طرق. لا يمكن، بشكل خاص، تجاوز الرموز المعرفة في PIE مبدئيًا بواسطة كائن آخر كما يمكن في المكتبات المشتركة. .IP \fB\-no\-pie\fP 4 .IX عنصر \-no\-pie أنشئ ملفًا تنفيذيًا معتمدًا على الموضع. هذا هو المبدئي. .IP \fB\-qmagic\fP 4 .IX عنصر \-qmagic يُتجاهل هذا الخيار من أجل التوافقية مع لينكس. .IP \fB\-Qy\fP 4 .IX عنصر \-Qy يُتجاهل هذا الخيار من أجل التوافقية مع SVR4. .IP \fB\-\-relax\fP 4 .IX عنصر \-\-relax .PD 0 .IP \fB\-\-no\-relax\fP 4 .IX عنصر \-\-no\-relax .PD خيار ذو تأثيرات معتمدة على الآلة. هذا الخيار مدعوم فقط في أهداف قليلة. .Sp في بعض المنصات يقوم خيار \fB\-\-relax\fP بإجراء تحسينات عامة خاصة بالهدف تصبح ممكنة عندما يقوم الرابط بحل العنونة في البرنامج، مثل تبسيط أوضاع العنونة، وتوليد تعليمات جديدة، واختيار نسخ أقصر من التعليمات الحالية، ودمج القيم الثابتة. .Sp في بعض المنصات، قد تجعل تحسينات وقت الربط العامة هذه التنقيح الرمزي للملف التنفيذي الناتج مستحيلاً. هذا هو الحال المعروف لمعالجات عائلة Matsushita MN10200 و MN10300. .Sp في المنصات التي تدعم هذه الميزة، سيقوم الخيار \&\fB\-\-no\-relax\fP بتعطيلها. .Sp في المنصات التي لا تدعم هذه الميزة، يتم قبول الخيارين \fB\-\-relax\fP و \fB\-\-no\-relax\fP، ولكن يجري تجاهلهما. .IP \fB\-\-retain\-symbols\-file=\fP\fIاسم_الملف\fP 4 .IX عنصر \-\-retain\-symbols\-file=اسم_الملف الاحتفاظ بـ \fIفقط\fP الرموز المدرجة في الملف \fIfilename\fP، ونبذ جميع الرموز الأخرى. \fIfilename\fP هو ببساطة ملف مسطح، مع اسم رمز واحد لكل سطر. هذا الخيار مفيد بشكل خاص في البيئات (مثل VxWorks) حيث يتم تجميع جدول رموز عالمي كبير تدريجيًا، للحفاظ على ذاكرة وقت التشغيل. .Sp \&\fB\-\-retain\-symbols\-file\fP \fIلا\fP يتجاهل الرموز غير المعرفة، أو الرموز المطلوبة لعمليات إعادة التوطين. .Sp يمكنك تحديد \fB\-\-retain\-symbols\-file\fP مرة واحدة فقط في سطر الأوامر. إنه يتخطى الخيارين \fB\-s\fP و \fB\-S\fP. .IP \fB\-rpath=\fP\fIمسار\fP 4 .IX عنصر \-rpath=دليل أضف دليلًا إلى مسار بحث مكتبة وقت التشغيل. يُستخدم هذا عند ربط ملف ELF تنفيذي بأجسام مشتركة. تُسلسل جميع معاملات \fB\-rpath\fP وتُمرر إلى رابط وقت التشغيل، الذي يستخدمها لتحديد موقع الأجسام المشتركة وقت التشغيل. .Sp يُستخدم الخيار \fB\-rpath\fP أيضًا عند تحديد موقع الكائنات المشتركة المطلوبة بواسطة الكائنات المشتركة المضمنة صراحة في الرابط؛ انظر وصف الخيار \fB\-rpath\-link\fP. البحث في \fB\-rpath\fP بهذه الطريقة مدعوم فقط بواسطة الروابط الأصلية والروابط المتقاطعة (cross linkers) التي ضُبطت باستخدام خيار \fB\-\-with\-sysroot\fP. .Sp إذا لم يُستخدم \fB\-rpath\fP عند ربط ملف ELF تنفيذي، ستُستخدم محتويات متغير البيئة \f(CW\*(C`LD_RUN_PATH\*(C'\fP إذا كان معرفا. .Sp يمكن استخدام الخيار \fB\-rpath\fP أيضًا على نظام SunOS. مبدئيًا، في SunOS، سيقوم الرابط بتكوين مسار بحث وقت التشغيل من جميع خيارات \&\fB\-L\fP المعطاة له. إذا استُخدم خيار \fB\-rpath\fP، فسيُشكل مسار بحث وقت التشغيل حصريًا باستخدام خيارات \fB\-rpath\fP، مع تجاهل خيارات \fB\-L\fP. قد يكون هذا مفيدًا عند استخدام gcc، الذي يضيف العديد من خيارات \fB\-L\fP التي قد تكون على أنظمة ملفات موصولة عبر NFS. .Sp للتوافق مع روابط ELF الأخرى، إذا تبع الخيار \fB\-R\fP اسم مجلد بدلاً من اسم ملف، فسيتم التعامل معه كخيار \fB\-rpath\fP. .IP \fB\-rpath\-link=\fP\fIمسار\fP 4 .IX عنصر \-rpath\-link=دليل عند استخدام ELF أو SunOS، قد تتطلب مكتبة مشتركة واحدة مكتبة أخرى. يحدث هذا عندما يتضمن ربط \f(CW\*(C`ld \-shared\*(C'\fP مكتبة مشتركة كواحد من ملفات المدخلات. .Sp عندما يواجه المرابط مثل هذه التبعية أثناء إجراء ربط غير مشترك وغير قابل لإعادة التوطين، فإنه سيحاول آليًا تحديد موقع المكتبة المشتركة المطلوبة وتضمينها في الربط، إذا لم تكن مضمنة صراحة. في مثل هذه الحالة، تُبحث عدة مجلدات كما هو موضح أدناه. يحدد الخيار \fB\-rpath\-link\fP المجموعة الأولى من المجلدات التي سيُبحث فيها. قد يحدد هذا الخيار تسلسلاً من أسماء المجلدات إما بتقديم قائمة من الأسماء مفصولة بنقطتين، أو بالظهور عدة مرات. .Sp يمكن أن تظهر العلامتان \f(CI$ORIGIN\fR و \f(CI$LIB\fR في أدلة البحث هذه. وسيُستبدلان بالمسار الكامل للدليل الذي يحتوي على البرنامج أو الكائن المشترك في حالة \f(CI$ORIGIN\fR، وإما بـ \fBlib\fP \- للثنائيات ذات 32 بت \- أو \fBlib64\fP \- للثنائيات ذات 64 بت \- في حالة \f(CI$LIB\fR. .Sp يمكن أيضًا استخدام الصيغة البديلة لهذه الرموز \- \fI${ORIGIN}\fP و \&\fI${LIB}\fP. الرمز \f(CI$PLATFORM\fR غير مدعوم. .Sp يجب استخدام الخيار \fB\-\-rpath\-link\fP بحذر لأنه يتجاوز مسار البحث الذي قد يكون مجمعًا بشكل ثابت داخل مكتبة مشتركة. في مثل هذه الحالة، من الممكن استخدام مسار بحث مختلف دون قصد عما كان سيستخدمه رابط وقت التشغيل. .Sp عندما تكون هناك حاجة لمكتبات مشتركة إضافية، سيبحث الموصل في الأدلة بالترتيب المدرج أدناه للعثور عليها. لاحظ مع ذلك أن هذا ينطبق فقط على المكتبات الإضافية اللازمة لتلبية المكتبات المشتركة المضمنة بالفعل. \fIلا\fP ينطبق هذا على المكتبات المضمنة عبر خيار سطر الأوامر \fB\-l\fP. لا تُجرى عمليات البحث عن مكتبات \fB\-l\fP إلا في الأدلة المحددة بخيار \fB\-L\fP. .RS 4 .IP 1. 4 أي مجلدات محددة بواسطة خيارات \fB\-rpath\-link\fP. .IP 2. 4 أي مجلدات محددة بواسطة خيارات \fB\-rpath\fP. الفرق بين \fB\-rpath\fP و \fB\-rpath\-link\fP هو أن المجلدات المحددة بخيارات \fB\-rpath\fP تُضمّن في الملف القابل للتنفيذ وتُستخدم وقت التشغيل، بينما يكون الخيار \fB\-rpath\-link\fP فعالاً وقت الوصل فقط. البحث في \fB\-rpath\fP بهذه الطريقة مدعوم فقط بواسطة الوصلات الأصلية والوصلات العابرة التي جرت تهيئتها بخيار \fB\-\-with\-sysroot\fP. .IP 3. 4 في نظام ELF، بالنسبة للروابط الأصلية، إذا لم تُستخدم الخيارات \fB\-rpath\fP و \&\fB\-rpath\-link\fP، سيجري البحث في محتويات متغير البيئة \f(CW\*(C`LD_RUN_PATH\*(C'\fP. .IP 4. 4 في SunOS، إذا لم يُستخدم الخيار \fB\-rpath\fP، سيجري البحث في أي أدلة محددة باستخدام الخيارات \fB\-L\fP. .IP 5. 4 بالنسبة لرابط أصيل، ابحث في محتويات متغير البيئة \f(CW\*(C`LD_LIBRARY_PATH\*(C'\fP. .IP 6. 4 بالنسبة لرابط ELF أصيل، يتم البحث في المجلدات الموجودة في \f(CW\*(C`DT_RUNPATH\*(C'\fP أو \&\f(CW\*(C`DT_RPATH\*(C'\fP للمكتبة المشتركة عن المكتبات المشتركة التي تحتاجها. يتم تجاهل مدخلات \f(CW\*(C`DT_RPATH\*(C'\fP في حال وجود مدخلات \&\f(CW\*(C`DT_RUNPATH\*(C'\fP. .IP 7. 4 بالنسبة لرابط لنظام لينكس، إذا وُجد الملف \fI/etc/ld.so.conf\fP، فسيتم استخدام قائمة المجلدات الموجودة في ذلك الملف. ملاحظة: يُسبق مسار هذا الملف بقيمة \f(CW\*(C`sysroot\*(C'\fP إذا كانت محددة، ثم أي سلسلة \f(CW\*(C`prefix\*(C'\fP إذا عُيّن الرابط بخيار \fB\-\-prefix=\fP. .IP 8. 4 بالنسبة لرابط أصيل على نظام FreeBSD، يتم البحث في أي مجلدات محددة بواسطة ماكرو \f(CW\*(C`_PATH_ELF_HINTS\*(C'\fP المعرف في ملف الترويسة \fIelf\-hints.h\fP. .IP 9. 4 أي مجلدات محددة بأمر \f(CW\*(C`SEARCH_DIR\*(C'\fP في برنامج وصل نصي مُعطى في سطر الأوامر، بما في ذلك البرامج النصية المحددة بواسطة \fB\-T\fP (وليس \fB\-dT\fP). .IP 10. 4 الأدلة الافتراضية، عادة \fI/lib\fP و \fI/usr/lib\fP. .IP 11. 4 أي مجلدات محددة بواسطة ملحق LDPT_SET_EXTRA_LIBRARY_PATH. .IP 12. 4 أي مجلدات محددة بأمر \f(CW\*(C`SEARCH_DIR\*(C'\fP في برنامج وصل نصي مبدئي. .RE .RS 4 .Sp ملاحظة ومع ذلك في الأنظمة القائمة على لينكس هناك تحذير إضافي: إذا كان خيار \fB\-\-as\-needed\fP نشطًا \fIو\fP جرى تحديد موقع مكتبة مشتركة من شأنها عادةً تلبية البحث \fIو\fP هذه المكتبة ليس لها وسم DT_NEEDED لـ \fIlibc.so\fP \&\fIو\fP كان هناك مكتبة مشتركة لاحقًا في مجموعة أدلة البحث تلبي البحث أيضًا \fIو\fP هذه المكتبة المشتركة الثانية لها وسم DT_NEEDED لـ \&\fIlibc.so\fP \fIفإنه\fP سيجري اختيار المكتبة الثانية بدلاً من الأولى. .Sp إذا لم يُعثر على المكتبة المشتركة المطلوبة، فسيصدر الرابط (linker) تحذيراً ويستمر في عملية الربط. .RE .IP \fB\-\-section\-ordering\-file=\fP\fIسكربت\fP 4 .IX عنصر \-\-section\-ordering\-file=سكربت يُستخدم هذا الخيار لتعزيز سيناريو الموصل الحالي بتعيين إضافي لأقسام المدخلات إلى أقسام المخرجات. يجب أن يستخدم هذا الملف نفس الصيغة لـ \f(CW\*(C`SECTIONS\*(C'\fP المستخدمة في سيناريوهات الموصل العادية، ولكن لا ينبغي أن يفعل أي شيء آخر سوى وضع أقسام المدخلات في أقسام المخرجات. \f(CW@pxref\fP{SECTIONS} .Sp القيد الثاني على سكربت ترتيب الأقسام هو أنه لا يمكنه إلا الإشارة إلى أقسام المخرجات المعرفة بالفعل بواسطة أي سكربت رابط قيد الاستخدام حاليًا. (أي سكربت الرابط المبدئي أو سكربت محدد في سطر الأوامر). ومع ذلك، فإن فائدة سكربت ترتيب الأقسام هي أن أقسام المدخلات تُسند إلى بداية أقسام المخرجات، بحيث يمكنها ضمان ترتيب الأقسام في قسم المخرجات. على سبيل المثال، تخيل أن سكربت الرابط المبدئي يبدو هكذا: .Sp .Vb 4 \& SECTIONS { \& .text : { *(.text.hot) ; *(.text .text.*) } \& .data : { *(.data.big) ; *(.data .data.*) } \& } .Ve .Sp ثم إذا استُخدم ملف ترتيب أقسام مثل هذا: .Sp .Vb 2 \& .text : { *(.text.first) ; *(.text.z*) } \& .data : { foo.o(.data.first) ; *(.data.small) } .Ve .Sp سيكون هذا مكافئًا لسيناريو موصل مثل هذا: .Sp .Vb 4 \& SECTIONS { \& .text : { *(.text.first) ; *(.text.z*) ; *(.text.hot) ; *(.text .text.*) } \& .data : { foo.o(.data.first) ; *(.data.small) ; *(.data.big) ; *(.data .data.*) } \& } .Ve .Sp تتمثل ميزة ملف ترتيب الأقسام في أنه يمكن استخدامه لترتيب تلك الأقسام التي تهم المستخدم دون الحاجة إلى القلق بشأن أي أقسام أخرى، أو مناطق ذاكرة، أو أي شيء آخر. .IP \fB\-shared\fP 4 .IX عنصر \-shared .PD 0 .IP \fB\-Bshareable\fP 4 .IX عنصر \-Bshareable .PD أنشئ مكتبة مشتركة. هذا مدعوم حاليًا فقط على منصات ELF و XCOFF و SunOS. في SunOS، سيقوم الموصل آليًا بإنشاء مكتبة مشتركة إذا لم يُستخدم الخيار \fB\-e\fP وكانت هناك رموز غير معرفة في الوصل. .IP \fB\-\-sort\-common\fP 4 .IX عنصر \-\-sort\-common .PD 0 .IP \fB\-\-sort\-common=ascending\fP 4 .IX عنصر \-\-sort\-common=ascending .IP \fB\-\-sort\-common=descending\fP 4 .IX عنصر \-\-sort\-common=descending .PD يخبر هذا الخيار \fBld\fP بفرز الرموز المشتركة حسب المحاذاة بترتيب تصاعدي أو تنازلي عند وضعها في أقسام المخرجات المناسبة. محاذات الرموز المأخوذة في الاعتبار هي ستة عشر بايت أو أكبر، وثمانية بايت، وأربعة بايت، وبايتان، وبايت واحد. هذا لمنع الفجوات بين الرموز بسبب قيود المحاذاة. إذا لم يُحدد ترتيب فرز، فيُفترض الترتيب التنازلي. .IP \fB\-\-sort\-section=name\fP 4 .IX عنصر \-\-sort\-section=name سيطبق هذا الخيار \f(CW\*(C`SORT_BY_NAME\*(C'\fP على جميع أنماط الأقسام التي تستخدم محارف البدل في سيناريو الموصل. .IP \fB\-\-sort\-section=alignment\fP 4 .IX عنصر \-\-sort\-section=alignment سيطبق هذا الخيار \f(CW\*(C`SORT_BY_ALIGNMENT\*(C'\fP على جميع أنماط الأقسام التي تستخدم محارف البدل في سيناريو الموصل. .IP \fB\-\-spare\-dynamic\-tags=\fP\fIالعدد\fP 4 .IX عنصر \-\-spare\-dynamic\-tags=العدد يحدد هذا الخيار عدد الفتحات الفارغة التي يجب تركها في قسم \&.dynamic لكائنات ELF المشتركة. قد تكون الفتحات الفارغة مطلوبة بواسطة أدوات ما بعد المعالجة، مثل prelinker. المبدئي هو 5. .IP \fB\-\-split\-by\-file[=\fP\fIالحجم\fP\fB]\fP 4 .IX عنصر \-\-split\-by\-file[=الحجم] مشابه لـ \fB\-\-split\-by\-reloc\fP ولكنه ينشئ قسم إخراج جديد لكل ملف إدخال عند الوصول إلى الحجم \fIsize\fP. القيمة الافتراضية لـ \fIsize\fP هي 1 إذا لم تُعطَ. .IP \fB\-\-split\-by\-reloc[=\fP\fIالعدد\fP\fB]\fP 4 .IX عنصر \-\-split\-by\-reloc[=العدد] يحاول إنشاء أقسام إضافية في ملف المخرجات بحيث لا يحتوي أي قسم مخرجات منفرد في الملف على أكثر من \fIcount\fP من عمليات إعادة التوطين. يفيد هذا عند توليد ملفات ضخمة قابلة لإعادة التوطين لتنزيلها في نوى وقت حقيقي معينة بتنسيق ملفات الكائنات COFF؛ بما أن COFF لا يمكنه تمثيل أكثر من 65535 عملية إعادة توطين في قسم واحد. لاحظ أن هذا سيفشل في العمل مع تنسيقات ملفات الكائنات التي لا تدعم الأقسام التعسفية. لن يقوم الرابط بتقسيم أقسام المدخلات الفردية لإعادة التوزيع، لذا إذا احتوى قسم مدخلات واحد على أكثر من \fIcount\fP من عمليات إعادة التوطين، فسيحتوي قسم مخرجات واحد على هذا العدد من عمليات إعادة التوطين. القيمة المبدئية لـ \fIcount\fP هي 32768. .IP \fB\-\-stats[=\fP\fIاسم_الملف\fP\fB]\fP 4 .IX عنصر \-\-stats[=اسم_الملف] احسب واعرض إحصائيات حول عملية الموصل، مثل وقت التنفيذ واستخدام الذاكرة. .Sp إذا لم يُقدَّم معطى \fIfilename\fP الاختياري، فسيتم الإبلاغ عن المعلومات الأساسية فقط، وتُرسل إلى مجرى خرج الأخطاء القياسي. أما إذا قُدِّم معطى \fIfilename\fP، فتُكتب المعلومات الموسعة في الملف المسمى. وإذا ضُبط \fIfilename\fP على الرمز \fI\-\fP فقط، تُرسل المعلومات الموسعة إلى مجرى الخرج القياسي. وإذا بدأ \fIfilename\fP بـ \&\fI+\fP، فسيُفتح الملف في وضع الإلحاق بدلاً من وضع الكتابة فوق المحتوى. .Sp إذا فُعّل الخيار \fB\-Map\fP فستُسجل المعلومات أيضًا في ملف الخريطة. ملاحظة: إذا أُعطي كلا الخيارين \&\fB\-\-stats\fP و \fB\-Map\fP معاملات \&\fIfilename\fP وكانت متطابقة، فستُكتب المعلومات مرة واحدة فقط لا مرتين. .Sp إذا عُرف متغير البيئة \f(CW\*(C`LD_STATS\*(C'\fP، فإنه سيسلك مسلك خيار \fB\-\-stats\fP. إذا كانت قيمة المتغير سلسلة نصية، فستُستخدم كاسم لملف تُسجل فيه المعلومات. وخلاف ذلك، ستُرسل المعلومات إلى دفق المخرج القياسي. يتيح استخدام متغير البيئة تسجيل الإحصائيات دون الحاجة إلى تعديل سطر أوامر الرابط. ملاحظة: إذا استُخدم كل من متغير البيئة وخيار \&\fB\-\-stats\fP، فإن الخيار \fB\-\-stats\fP تكون له الأولوية. .Sp تتضمن المعلومات الموسعة المبلغ عنها وقت المعالج (CPU time) المستخدم، وإذا كان استدعاء مكتبة النظام \f(BIgetrusage()\fR متاحًا، فسيتم الإبلاغ عن أقصى حجم للمجموعة وأوقات تشغيل المستخدم والنظام أيضًا. بالإضافة إلى ذلك، إذا كانت استدعاءات مكتبة النظام \fImallinfo\fP أو \fImallinfo2\fP متاحة، فسيتم الإبلاغ عن إجمالي استخدام الذاكرة، .Sp يتم عرض المعلومات للأجزاء الفردية من عملية الربط والتي يشار إليها باسم \fIphases\fP (مراحل). لاحظ أن المراحل الفردية يمكن أن تحتوي على بعضها البعض أو تتداخل، لذا لا ينبغي افتراض أن إجمالي الموارد المستخدمة من قبل الرابط هو مجموع الموارد المستخدمة من قبل المراحل الفردية. .Sp بالإضافة إلى ذلك، يتم الإبلاغ عن المعلومات أيضاً لمرحلة خاصة تسمى \fIALL\fP تغطي عملية الربط بأكملها. .Sp عند الإبلاغ عن المعلومات الموسعة، تُضمن أيضًا نسخة المرابط، ووسائط سطر الأوامر، ووقت بدء المرابط. وهذا يسهل التعامل مع الحالات التي تُستدعى فيها عمليات ربط متعددة بواسطة نظام بناء، ولتحديد الوسائط التي كانت مسؤولة بالضبط عن إنتاج الإحصائيات المبلغ عنها. .Sp يبدو المخرج الموسع شيئًا كهذا: .Sp .Vb 3 \& إحصائيات: إصدار الموصل: (GNU Binutils) 2.44.50.20250401 \& إحصائيات: بدأ الموصل: الأربعاء 2 أبريل 09:36:41 2025 \& إحصائيات: المعاملات: ld \-z norelro \-z nomemory\-seal \-z no\-separate\-code \-o a.out [...] \& \& إحصائيات: المرحلة cpu time rss user time system time memory \& إحصائيات: الاسم (microsec) (KiB) (seconds) (seconds) (KiB) \& إحصائيات: ALL 390082 217740 0 0 25219440 \& إحصائيات: ctf processing 12 0 0 0 0 \& إحصائيات: string merge 1324 0 0 0 406544 \& إحصائيات: parsing 349 288 0 0 119792 \& إحصائيات: plugins 1 0 0 0 0 \& إحصائيات: processing files 259616 214524 0 0 31569120 \& إحصائيات: write 116493 0 0 0 48096 .Ve .IP \fB\-\-no\-stats\fP 4 .IX عنصر \-\-no\-stats يعطّل الإبلاغ عن إحصائيات الاستخدام، في حال تم تفعيلها عبر خيار سطر الأوامر \fB\-\-stats\fP أو متغير البيئة \&\fILD_STATS\fP. .IP \fB\-\-sysroot=\fP\fIالدليل\fP 4 .IX عنصر \-\-sysroot=الدليل استخدم \fIdirectory\fP كموقع لـ sysroot، متجاوزًا القيمة المبدئية وقت الضبط. هذا الخيار مدعوم فقط من قبل الروابط التي ضُبطت باستخدام \fB\-\-with\-sysroot\fP. .IP \fB\-\-task\-link\fP 4 .IX عنصر \-\-task\-link يُستخدم هذا بواسطة الأهداف القائمة على COFF/PE لإنشاء ملف كائن مرتبط بمهمة حيث حُوّلت جميع الرموز العامة إلى رموز ساكنة. .IP \fB\-\-traditional\-format\fP 4 .IX عنصر \-\-traditional\-format لبعض الأهداف، تختلف مخرجات \fBld\fP في بعض النواحي عن مخرجات بعض الروابط الموجودة. يطلب هذا المفتاح من \fBld\fP استخدام التنسيق التقليدي بدلاً من ذلك. .Sp على سبيل المثال، في نظام SunOS، يدمج \fBld\fP المداخل المتكررة في جدول سلاسل الرموز. يمكن لهذا أن يقلل حجم ملف المخرجات الذي يحتوي على معلومات تنقيح كاملة بنسبة تزيد عن 30 بالمائة. لسوء الحظ، لا يستطيع برنامج \&\f(CW\*(C`dbx\*(C'\fP الخاص بنظام SunOS قراءة البرنامج الناتج (بينما لا يواجه \f(CW\*(C`gdb\*(C'\fP أي مشكلة). يخبر مفتاح \fB\-\-traditional\-format\fP الرابط \fBld\fP بعدم دمج المداخل المتكررة. .IP \fB\-\-section\-start=\fP\fIاسم_القسم\fP\fB=\fP\fIorg\fP 4 .IX عنصر \-\-section\-start=اسم_القسم=org تحديد موقع قسم في ملف المخرجات عند العنوان المطلق المعطى بواسطة \fIorg\fP. يمكنك استخدام هذا الخيار عدة مرات حسب الضرورة لتحديد موقع أقسام متعددة في سطر الأوامر. يجب أن يكون \&\fIorg\fP عدداً صحيحاً ست عشرياً واحداً؛ للتوافق مع الموصلات الأخرى، يمكنك حذف \&\fB0x\fP البادئة المرتبطة عادةً بالقيم الست عشرية. \fIملاحظة:\fP يجب ألا توجد مسافة بيضاء بين \fIsectionname\fP، وعلامة التساوي ("\fB=\fP")، و\fIorg\fP. .IP \fB\-\-image\-base=\fP\fIorg\fP 4 .IX عنصر \-\-image\-base=org عند استخدام ELF، هو نفسه \fB\-Ttext\-segment\fP، حيث يقوم كلا الخيارين فعليًا بضبط عنوان الأساس لملف ELF التنفيذي. .Sp عند استخدام PE، استخدم \fIvalue\fP كعنوان أساس لبرنامجك أو dll. هذا هو أدنى موقع ذاكرة سيُستخدم عند تحميل البرنامج أو dll. لتقليل الحاجة إلى إعادة التوطين وتحسين أداء ملفات dll الخاصة بك، يجب أن يكون لكل منها عنوان أساس فريد ولا يتداخل مع أي dll أخرى. المبدئي هو 0x400000 للملفات التنفيذية، و 0x10000000 لملفات dll. .IP \fB\-Tbss=\fP\fIأصل\fP 4 .IX عنصر \-Tbss=org .PD 0 .IP \fB\-Tdata=\fP\fIأصل\fP 4 .IX عنصر \-Tdata=org .IP \fB\-Ttext=\fP\fIأصل\fP 4 .IX عنصر \-Ttext=org .PD نفس \fB\-\-section\-start\fP، مع استخدام \f(CW\*(C`.bss\*(C'\fP أو \f(CW\*(C`.data\*(C'\fP أو \&\f(CW\*(C`.text\*(C'\fP كـ \fIsectionname\fP. .IP \fB\-Ttext\-segment=\fP\fIأصل\fP 4 .IX عنصر \-Ttext\-segment=org عند إنشاء ملف تنفيذي ELF، فإنه سيضبط عنوان أول بايت من الشريحة الأولى. لاحظ أنه عند استخدام \fB\-pie\fP مع \&\fB\-Ttext\-segment=\fP\fIorg\fP، يوسم الملف التنفيذي المخرج بـ ET_EXEC بحيث يضمن أن يكون عنوان أول بايت من شريحة النص هو \fIorg\fP في وقت التشغيل. .IP \fB\-Trodata\-segment=\fP\fIأصل\fP 4 .IX عنصر \-Trodata\-segment=org عند إنشاء ملف تنفيذي ELF أو كائن مشترك لهدف تكون فيه البيانات المخصصة للقراءة فقط في شريحتها الخاصة المنفصلة عن نص التنفيذ، فإنه سيضبط عنوان أول بايت من شريحة البيانات المخصصة للقراءة فقط. .IP \fB\-Tldata\-segment=\fP\fIأصل\fP 4 .IX عنصر \-Tldata\-segment=org عند إنشاء ملف تنفيذي ELF أو كائن مشترك لنموذج الذاكرة المتوسط x86\-64، فإنه سيضبط عنوان أول بايت من شريحة ldata. .IP \fB\-\-unresolved\-symbols=\fP\fIالطريقة\fP 4 .IX عنصر \-\-unresolved\-symbols=طريقة حدّد كيفية التعامل مع الرموز غير المحلولة. هناك أربع قيم ممكنة لـ \fBmethod\fP: .RS 4 .IP \fBignore\-all\fP 4 .IX عنصر ignore\-all لا تبلغ عن أي رموز غير محلولة. .IP \fBreport\-all\fP 4 .IX عنصر report\-all الإبلاغ عن جميع الرموز غير المحلولة. هذا هو المبدئي. .IP \fBignore\-in\-object\-files\fP 4 .IX عنصر ignore\-in\-object\-files الإبلاغ عن الرموز غير المحلولة الموجودة في المكتبات المشتركة، مع تجاهلها إذا كانت قادمة من ملفات كائنات عادية. .IP \fBignore\-in\-shared\-libs\fP 4 .IX عنصر ignore\-in\-shared\-libs يُبلغ عن الرموز غير المحلولة التي تأتي من ملفات الكائنات العادية، ولكن يتجاهلها إذا جاءت من المكتبات المشتركة. يمكن أن يكون هذا مفيداً عند إنشاء ثنائي ديناميكي ويُعرف أن جميع المكتبات المشتركة التي ينبغي أن يشير إليها مضمنة في سطر أوامر الرابط. .RE .RS 4 .Sp يمكن أيضًا التحكم في سلوك المكتبات المشتركة بمفردها من خلال خيار \fB\-\-[no\-]allow\-shlib\-undefined\fP. .Sp عادةً ما يُولد الرابط رسالة خطأ لكل رمز غير محلول جرى الإبلاغ عنه، ولكن الخيار \fB\-\-warn\-unresolved\-symbols\fP يمكن أن يغير هذا إلى تحذير. .RE .IP \fB\-\-dll\-verbose\fP 4 .IX عنصر \-\-dll\-verbose .PD 0 .IP \fB\-\-verbose[=\fP\fIالعدد\fP\fB]\fP 4 .IX عنصر \-\-verbose[=رقم] .PD اعرض رقم إصدار \fBld\fP واسرد محاكيات الرابط المدعومة. اعرض ملفات الإدخال التي يمكن فتحها والتي لا يمكن فتحها. اعرض سكريبت الرابط المستخدم من قبل الرابط. إذا كان وسيط الرقم \fINUMBER\fP الاختياري أكبر من 1، فستُعرض أيضاً حالة رموز الملحق. .IP \fB\-\-version\-script=\fP\fIملف_سكربت_الإصدارة\fP 4 .IX عنصر \-\-version\-script=ملف_سكربت_الإصدار تحديد اسم سكربت الإصدار للرابط. يُستخدم هذا عادةً عند إنشاء مكتبات مشتركة لتحديد معلومات إضافية حول التسلسل الهرمي للإصدارات للمكتبة التي يتم إنشاؤها. هذا الخيار مدعوم بالكامل فقط على منصات ELF التي تدعم المكتبات المشتركة؛ انظر \fBVERSION\fP. وهو مدعوم جزئياً على منصات PE، والتي يمكنها استخدام سكربتات الإصدار لتصفية رؤية الرموز في وضع التصدير التلقائي: أي رموز تم تمييزها كـ \fBlocal\fP في سكربت الإصدار لن يتم تصديرها. .IP \fB\-\-warn\-common\fP 4 .IX عنصر \-\-warn\-common حذر عند دمج رمز مشترك مع رمز مشترك آخر أو مع تعريف رمز. تسمح مرابط يونكس بهذه الممارسة غير المنضبطة نوعًا ما، لكن المرابط في بعض أنظمة التشغيل الأخرى لا تسمح بذلك. يتيح لك هذا الخيار العثور على المشاكل المحتملة الناتجة عن دمج الرموز العامة. لسوء الحظ، تستخدم بعض مكتبات C هذه الممارسة، لذا قد تتلقى بعض التحذيرات بشأن الرموز في المكتبات وكذلك في برامجك. .Sp هناك ثلاثة أنواع من الرموز العالمية، موضحة هنا بأمثلة بلغة C: .RS 4 .IP "\fBint i = 1;\fP" 4 .IX عنصر "int i = 1;" تعريف، ينتقل إلى قسم البيانات المبدئية في ملف المخرجات. .IP "\fBextern int i;\fP" 4 .IX عنصر "extern int i;" مرجع غير معرف، لا يخصص مساحة. يجب أن يكون هناك إما تعريف أو رمز مشترك للمتغير في مكان ما. .IP "\fBint i;\fP" 4 .IX عنصر "int i;" رمز مشترك. إذا لم يوجد سوى (واحد أو أكثر) من الرموز المشتركة لمتغير ما، فإنه ينتقل إلى منطقة البيانات غير المبدئية في ملف المخرجات. يدمج الرابط الرموز المشتركة المتعددة لنفس المتغير في رمز واحد. إذا كانت ذات أحجام مختلفة، فإنه يختار الحجم الأكبر. يحول الرابط الرمز المشترك إلى تصريح، إذا وجد تعريف لنفس المتغير. .RE .RS 4 .Sp يمكن أن ينتج الخيار \fB\-\-warn\-common\fP خمسة أنواع من التحذيرات. يتكون كل تحذير من زوج من الأسطر: الأول يصف الرمز الذي جرت مواجهته للتو، والثاني يصف الرمز السابق الذي جرت مواجهته بنفس الاسم. سيكون أحد الرمزين أو كلاهما رمزًا مشتركًا. .IP 1. 4 تحويل رمز شائع إلى مرجع، لوجود تعريف للرمز بالفعل. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& تخطاه التعريف \& (
): warning: عُرّف هنا .Ve .IP 2. 4 تحويل رمز شائع إلى مرجع، بسبب مواجهة تعريف لاحق للرمز. هذه هي نفس الحالة السابقة، باستثناء أن الرموز تُصادف بترتيب مختلف. .Sp .Vb 3 \& (
): warning: definition of \`\*(Aq \& يتخطى الشائع \& (
): warning: الشائع موجود هنا .Ve .IP 3. 4 دمج رمز مشترك مع رمز مشترك سابق بنفس الحجم. .Sp .Vb 3 \& (
): warning: شائعات متعددة \& لـ \`\*(Aq \& (
): warning: الشائع السابق موجود هنا .Ve .IP 4. 4 دمج رمز مشترك مع رمز مشترك سابق أكبر. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& تخطاه شائع أكبر \& (
): warning: الشائع الأكبر موجود هنا .Ve .IP 5. 4 دمج رمز مشترك مع رمز مشترك سابق أصغر. هذا هو نفس الحالة السابقة، باستثناء أن الرموز تظهر بترتيب مختلف. .Sp .Vb 3 \& (
): warning: common of \`\*(Aq \& يتخطى شائعاً أصغر \& (
): warning: الشائع الأصغر موجود هنا .Ve .RE .RS 4 .RE .IP \fB\-\-warn\-constructors\fP 4 .IX عنصر \-\-warn\-constructors حذر إذا استُخدمت أي منشئات عامة. هذا مفيد فقط لعدد قليل من تنسيقات ملفات الكائنات. بالنسبة لتنسيقات مثل COFF أو ELF، لا يمكن للمرابط اكتشاف استخدام المنشئات العامة. .IP \fB\-\-warn\-execstack\fP 4 .IX عنصر \-\-warn\-execstack .PD 0 .IP \fB\-\-warn\-execstack\-objects\fP 4 .IX عنصر \-\-warn\-execstack\-objects .IP \fB\-\-no\-warn\-execstack\fP 4 .IX عنصر \-\-no\-warn\-execstack .PD في منصات ELF قد يُولد الرابط رسائل تحذير إذا طُلب منه إنشاء ملف مخرجات يحتوي على مكدس تنفيذي. هناك ثلاث حالات ممكنة: .RS 4 .IP 1. 4 لا تولد أي تحذيرات. .IP 2. 4 قم دائماً بإنشاء تحذيرات، حتى إذا تم طلب مكدس قابل للتنفيذ عبر خيار سطر الأوامر \fB\-z execstack\fP. .IP 3. 4 توليد تحذير فقط إذا طلب ملف كائني مكدسًا تنفيذيًا، ولكن ليس إذا جرى استخدام الخيار \fB\-z execstack\fP. .RE .RS 4 .Sp تعتمد الحالة الافتراضية على كيفية إعداد الرابط عند بنائه. يضع الخيار \fB\-\-no\-warn\-execstack\fP الرابط دائمًا في حالة "عدم التحذير". يضع الخيار \fB\-\-warn\-execstack\fP الرابط في حالة "التحذير دائمًا". يضع الخيار \&\fB\-\-warn\-execstack\-objects\fP الرابط في حالة "التحذير لملفات الكائنات فقط". .Sp ملاحظة: يمكن لملفات المدخلات بتنسيق ELF تحديد حاجتها لمكدس تنفيذي من خلال وجود جزء \fI.note.GNU\-stack\fP مع ضبط بت التنفيذ في أعلام الجزء. ويمكنها تحديد أنها لا تحتاج لمكدس تنفيذي من خلال وجود نفس الجزء، ولكن بدون ضبط بت علم التنفيذ. إذا لم يكن لملف المدخلات جزء \&\fI.note.GNU\-stack\fP فإن السلوك الافتراضي يعتمد على الهدف. بالنسبة لبعض الأهداف، فإن غياب مثل هذا الجزء يعني أن المكدس التنفيذي \fIمطلوب\fP. هذه مشكلة غالبًا في ملفات التجميع المكتوبة يدويًا. .RE .IP \fB\-\-error\-execstack\fP 4 .IX عنصر \-\-error\-execstack .PD 0 .IP \fB\-\-no\-error\-execstack\fP 4 .IX عنصر \-\-no\-error\-execstack .PD إذا كان الرابط سيولد رسالة تحذير حول مكدس (stack) قابل للتنفيذ، فإن خيار \fB\-\-error\-execstack\fP سيحول ذلك التحذير إلى خطأ بدلاً من ذلك. ملاحظة \- لا يغير هذا الخيار حالة توليد تحذير execstack الخاص بالرابط. استخدم \&\fB\-\-warn\-execstack\fP أو \fB\-\-warn\-execstack\-objects\fP لضبط حالة تحذير معينة. .Sp سيعيد الخيار \fB\-\-no\-error\-execstack\fP السلوك المبدئي المتمثل في توليد رسائل تحذير. .IP \fB\-\-warn\-multiple\-gp\fP 4 .IX عنصر \-\-warn\-multiple\-gp حذر إذا كانت هناك حاجة لقيم مؤشر عامة متعددة في ملف المخرج. هذا ذو معنى فقط لمعالجات معينة، مثل Alpha. تحديدًا، تضع بعض المعالجات الثوابت ذات القيم الكبيرة في قسم خاص. يشير مسجل خاص (المؤشر العام) إلى منتصف هذا القسم، بحيث يمكن تحميل الثوابت بكفاءة عبر نمط عنونة نسبي لمسجل الأساس. وبما أن الإزاحة في النمط النسبي لمسجل الأساس ثابتة وصغيرة نسبيًا (مثلاً 16 بت)، فإن هذا يحد من الحجم الأقصى لمجمع الثوابت. لذا، في البرامج الكبيرة، غالبًا ما يكون من الضروري استخدام قيم مؤشرات عامة متعددة لتتمكن من عنونة كافة الثوابت الممكنة. يؤدي هذا الخيار إلى إصدار تحذير كلما حدثت هذه الحالة. .IP \fB\-\-warn\-once\fP 4 .IX عنصر \-\-warn\-once التحذير مرة واحدة فقط لكل رمز غير معرف، بدلاً من مرة واحدة لكل وحدة تشير إليه. .IP \fB\-\-warn\-rwx\-segments\fP 4 .IX عنصر \-\-warn\-rwx\-segments .PD 0 .IP \fB\-\-no\-warn\-rwx\-segments\fP 4 .IX عنصر \-\-no\-warn\-rwx\-segments .PD حذر إذا أنشأ المرابط شريحة قابلة للتحميل وغير صفرية الحجم لها أعلام أذونات القراءة والكتابة والتنفيذ الثلاثة معًا. تمثل مثل هذه الشريحة ثغرة أمنية محتملة. بالإضافة إلى ذلك، ستُولد تحذيرات إذا أُنشئت شريحة تخزين محلية للخيوط (TLS) مع ضبط علم إذن التنفيذ، بغض النظر عما إذا كانت أعلام القراءة أو الكتابة مضبوطة أم لا. .Sp تُفعل هذه التحذيرات مبدئيًا. يمكن تعطيلها عبر خيار \&\fB\-\-no\-warn\-rwx\-segments\fP وإعادة تفعيلها عبر خيار \&\fB\-\-warn\-rwx\-segments\fP. .IP \fB\-\-error\-rwx\-segments\fP 4 .IX عنصر \-\-error\-rwx\-segments .PD 0 .IP \fB\-\-no\-error\-rwx\-segments\fP 4 .IX عنصر \-\-no\-error\-rwx\-segments .PD إذا كان الرابط سيصدر رسالة تحذير حول شريحة (segment) قابلة للتنفيذ وللكتابة، أو شريحة TLS قابلة للتنفيذ، فإن خيار \&\fB\-\-error\-rwx\-segments\fP سيحول هذا التحذير إلى خطأ بدلاً من ذلك. سيستعيد خيار \fB\-\-no\-error\-rwx\-segments\fP السلوك الافتراضي المتمثل في مجرد إصدار رسالة تحذير. .Sp ملاحظة \- خيار \fB\-\-error\-rwx\-segments\fP لا يقوم بحد ذاته بتفعيل التحذيرات بشأن هذه الأجزاء. هذه التحذيرات إما مفعلة افتراضيًا، إذا جرى تهيئة الرابط بهذه الطريقة، أو عبر خيار سطر الأوامر \&\fB\-\-warn\-rwx\-segments\fP. .IP \fB\-\-warn\-section\-align\fP 4 .IX عنصر \-\-warn\-section\-align حذر إذا تغير عنوان قسم المخرج بسبب المحاذاة. عادةً، تُضبط المحاذاة بواسطة قسم المدخل. لن يُغير العنوان إلا إذا لم يُحدد صراحة؛ أي إذا لم يحدد أمر \f(CW\*(C`SECTIONS\*(C'\fP عنوان بدء للقسم. .IP \fB\-\-warn\-textrel\fP 4 .IX عنصر \-\-warn\-textrel حذر إذا أضاف المرابط DT_TEXTREL إلى ملف تنفيذي مستقل عن الموقع أو كائن مشترك. .IP \fB\-\-warn\-alternate\-em\fP 4 .IX عنصر \-\-warn\-alternate\-em حذر إذا كان للكائن كود آلة ELF بديل. .IP \fB\-\-warn\-unresolved\-symbols\fP 4 .IX عنصر \-\-warn\-unresolved\-symbols إذا كان الرابط سيبلغ عن رمز لم يتم حله (انظر الخيار \&\fB\-\-unresolved\-symbols\fP) فإنه عادةً ما يصدر خطأً. يجعل هذا الخيار الرابط يصدر تحذيرًا بدلاً من ذلك. .IP \fB\-\-error\-unresolved\-symbols\fP 4 .IX عنصر \-\-error\-unresolved\-symbols يستعيد هذا سلوك الرابط المبدئي في توليد الأخطاء عندما يُبلغ عن رموز غير محلولة. .IP \fB\-\-whole\-archive\fP 4 .IX عنصر \-\-whole\-archive لكل أرشيف مذكور في سطر الأوامر بعد خيار \&\fB\-\-whole\-archive\fP، ضمن كل ملف كائن في الأرشيف في الرابط، بدلاً من البحث في الأرشيف عن ملفات الكائنات المطلوبة. يُستخدم هذا عادةً لتحويل ملف أرشيف إلى مكتبة مشتركة، مما يجبر تضمين كل كائن في المكتبة المشتركة الناتجة. يمكن استخدام هذا الخيار أكثر من مرة. .Sp ملاحظتان عند استخدام هذا الخيار من gcc: أولاً، gcc لا يعرف عن هذا الخيار، لذا يجب عليك استخدام \fB\-Wl,\-whole\-archive\fP. ثانياً، لا تنسَ استخدام \fB\-Wl,\-no\-whole\-archive\fP بعد قائمة الأرشيفات الخاصة بك، لأن gcc سيضيف قائمة الأرشيفات الخاصة به إلى عملية الربط وقد لا تريد أن تؤثر هذه العلامة عليها أيضاً. .IP \fB\-\-wrap=\fP\fIالرمز\fP 4 .IX عنصر \-\-wrap=symbol استخدم وظيفة غلاف لـ \fIsymbol\fP. أي مرجع غير معرف لـ \&\fIsymbol\fP سيُحل إلى \f(CW\*(C`_\|_wrap_\fP\f(CIsymbol\f(CW\*(C'\fP. أي مرجع غير معرف لـ \f(CW\*(C`_\|_real_\fP\f(CIsymbol\f(CW\*(C'\fP سيُحل إلى \&\fIsymbol\fP. .Sp يمكن استخدام هذا لتوفير غلاف لدالة نظام. يجب استدعاء دالة الغلاف \f(CW\*(C`_\|_wrap_\fP\f(CIsymbol\f(CW\*(C'\fP. إذا أرادت استدعاء دالة النظام، فيجب عليها استدعاء \&\f(CW\*(C`_\|_real_\fP\f(CIsymbol\f(CW\*(C'\fP. .Sp إليك مثال بسيط: .Sp .Vb 6 \& void * \& _\|_wrap_malloc (size_t c) \& { \& printf ("malloc called with %zu\en", c); \& return _\|_real_malloc (c); \& } .Ve .Sp إذا قمت بربط كود آخر بهذا الملف باستخدام \fB\-\-wrap malloc\fP، فإن جميع الاستدعاءات لـ \f(CW\*(C`malloc\*(C'\fP ستستدعي الدالة \f(CW\*(C`_\|_wrap_malloc\*(C'\fP بدلاً منها. استدعاء \f(CW\*(C`_\|_real_malloc\*(C'\fP داخل \f(CW\*(C`_\|_wrap_malloc\*(C'\fP سيقوم باستدعاء دالة \f(CW\*(C`malloc\*(C'\fP الحقيقية. .Sp قد ترغب في توفير دالة \f(CW\*(C`_\|_real_malloc\*(C'\fP أيضًا، بحيث تنجح الروابط بدون خيار \fB\-\-wrap\fP. إذا فعلت ذلك، فيجب ألا تضع تعريف \f(CW\*(C`_\|_real_malloc\*(C'\fP في نفس الملف مع \f(CW\*(C`_\|_wrap_malloc\*(C'\fP؛ فإذا فعلت ذلك، فقد يحل المجمّع الاستدعاء قبل أن تتاح للموصل فرصة لفه إلى \f(CW\*(C`malloc\*(C'\fP. .Sp يقوم الرابط باستبدال المراجع غير المعرفة فقط. لذا، فإن المراجع الداخلية لوحدة الترجمة إلى \fIsymbol\fP لا يتم حلها إلى \&\f(CW\*(C`_\|_wrap_\fP\f(CIsymbol\f(CW\*(C'\fP. في المثال التالي، لا يتم حل استدعاء \f(CW\*(C`f\*(C'\fP في \&\f(CW\*(C`g\*(C'\fP إلى \f(CW\*(C`_\|_wrap_f\*(C'\fP. .Sp .Vb 5 \& int \& f (void) \& { \& return 123; \& } \& \& int \& g (void) \& { \& return f(); \& } .Ve .IP \fB\-\-eh\-frame\-hdr\fP 4 .IX عنصر \-\-eh\-frame\-hdr .PD 0 .IP \fB\-\-no\-eh\-frame\-hdr\fP 4 .IX عنصر \-\-no\-eh\-frame\-hdr .PD طلب (\fB\-\-eh\-frame\-hdr\fP) أو كبت (\fB\-\-no\-eh\-frame\-hdr\fP) إنشاء مقطع \f(CW\*(C`.eh_frame_hdr\*(C'\fP وترويسة شريحة ELF \f(CW\*(C`PT_GNU_EH_FRAME\*(C'\fP. .IP \fB\-\-no\-ld\-generated\-unwind\-info\fP 4 .IX عنصر \-\-no\-ld\-generated\-unwind\-info طلب إنشاء معلومات فك (unwind) لـ \f(CW\*(C`.eh_frame\*(C'\fP لمقاطع الكود المولدة بواسطة الرابط مثل PLT. هذا الخيار مفعل مبدئيًا إذا كان فك المعلومات المولد بواسطة الرابط مدعومًا. .IP \fB\-\-discard\-sframe\fP 4 .IX عنصر \-\-discard\-sframe اهمل معلومات تتبع المكدس \f(CW\*(C`.sframe\*(C'\fP من المخرجات. يمنع هذا الخيار أيضاً إنشاء بيانات تتبع مكدس SFrame لأقسام الكود التي يولدها الرابط مثل PLT. هذا الخيار معطل مبدئياً. .IP \fB\-\-enable\-new\-dtags\fP 4 .IX عنصر \-\-enable\-new\-dtags .PD 0 .IP \fB\-\-disable\-new\-dtags\fP 4 .IX عنصر \-\-disable\-new\-dtags .PD يمكن لهذا الموصل إنشاء وسوم ELF الحيوية الجديدة. لكن أنظمة ELF القديمة قد لا تفهمها. إذا حددت \&\fB\-\-enable\-new\-dtags\fP، فستُنشأ الوسوم الحيوية الجديدة عند الحاجة وتُهمل الوسوم الحيوية القديمة. إذا حددت \fB\-\-disable\-new\-dtags\fP، فلن تُنشأ أي وسوم حيوية جديدة. مبدئيًا، لا تُنشأ الوسوم الحيوية الجديدة. لاحظ أن هذه الخيارات متاحة فقط لأنظمة ELF. .IP \fB\-\-hash\-size=\fP\fIرقم\fP 4 .IX عنصر \-\-hash\-size=الرقم يضبط الحجم المبدئي لجداول التجزئة (hash tables) الخاصة بالرابط إلى عدد أولي قريب من \fInumber\fP. يمكن أن تؤدي زيادة هذه القيمة إلى تقليل الوقت الذي يستغرقه الرابط لأداء مهامه، على حساب زيادة متطلبات ذاكرة الرابط. وبالمثل، يمكن أن يؤدي تقليل هذه القيمة إلى تقليل متطلبات الذاكرة على حساب السرعة. القيمة المبدئية هي 4051 في الظروف العادية و 1021 إذا استُخدم خيار سطر الأوامر \&\fB\-\-reduce\-memory\-overheads\fP. .IP \fB\-\-hash\-style=\fP\fIالنمط\fP 4 .IX عنصر \-\-hash\-style=النمط يضبط نوع جدول (جداول) التجزئة الخاصة بالرابط. يمكن أن يكون \fIstyle\fP إما \&\f(CW\*(C`sysv\*(C'\fP لقسم ELF \f(CW\*(C`.hash\*(C'\fP التقليدي، أو \f(CW\*(C`gnu\*(C'\fP لقسم GNU \f(CW\*(C`.gnu.hash\*(C'\fP ذي النمط الجديد، أو \f(CW\*(C`both\*(C'\fP لكل من جداول تجزئة ELF التقليدية و GNU ذات النمط الجديد. يعتمد الإعداد المبدئي على كيفية ضبط الرابط، ولكنه في معظم الأنظمة القائمة على لينكس سيكون \f(CW\*(C`both\*(C'\fP. .IP \fB\-\-compress\-debug\-sections=none\fP 4 .IX عنصر \-\-compress\-debug\-sections=none .PD 0 .IP \fB\-\-compress\-debug\-sections=zlib\fP 4 .IX عنصر \-\-compress\-debug\-sections=zlib .IP \fB\-\-compress\-debug\-sections=zlib\-gnu\fP 4 .IX عنصر \-\-compress\-debug\-sections=zlib\-gnu .IP \fB\-\-compress\-debug\-sections=zlib\-gabi\fP 4 .IX عنصر \-\-compress\-debug\-sections=zlib\-gabi .IP \fB\-\-compress\-debug\-sections=zstd\fP 4 .IX عنصر \-\-compress\-debug\-sections=zstd .PD في منصات ELF، تتحكم هذه الخيارات في كيفية ضغط أجزاء تنقيح DWARF باستخدام zlib. .Sp لا يضغط \&\fB\-\-compress\-debug\-sections=none\fP أقسام DWARF الخاصة بالتنقيح. بينما يضغط \fB\-\-compress\-debug\-sections=zlib\-gnu\fP أقسام DWARF الخاصة بالتنقيح ويعيد تسميتها لتبدأ بـ \fB.zdebug\fP بدلاً من \fB.debug\fP. كما يضغط \fB\-\-compress\-debug\-sections=zlib\-gabi\fP أيضاً أقسام DWARF الخاصة بالتنقيح، ولكن بدلاً من إعادة تسميتها فإنه يضبط علامة SHF_COMPRESSED في ترويسات الأقسام. .Sp الخيار \fB\-\-compress\-debug\-sections=zlib\fP هو اسم مستعار لـ \&\fB\-\-compress\-debug\-sections=zlib\-gabi\fP. .Sp \&\fB\-\-compress\-debug\-sections=zstd\fP يضغط أقسام تنقيع DWARF باستخدام zstd. .Sp لاحظ أن هذا الخيار يتجاوز أي ضغط في أجزاء التنقيح للمدخلات، لذا إذا جرى ربط ملف ثنائي باستخدام \fB\-\-compress\-debug\-sections=none\fP على سبيل المثال، فإن أي أجزاء تنقيح مضغوطة في ملفات المدخلات سيجري فك ضغطها قبل نسخها إلى الملف الثنائي للمخرجات. .Sp يختلف سلوك الضغط المبدئي اعتماداً على الهدف المعني وخيارات الضبط المستخدمة لبناء سلسلة الأدوات. يمكن تحديد المبدئي من خلال فحص المخرج من خيار \&\fB\-\-help\fP الخاص بالرابط. .IP \fB\-\-reduce\-memory\-overheads\fP 4 .IX عنصر \-\-reduce\-memory\-overheads يقلل هذا الخيار من متطلبات الذاكرة في وقت تشغيل ld، على حساب سرعة الوصل. قُدم هذا الخيار لاختيار خوارزمية O(n^2) القديمة لتوليد ملف خريطة الوصل، بدلاً من خوارزمية O(n) الجديدة التي تستهلك ذاكرة أكبر بنحو 40% لتخزين الرموز. .Sp أثر آخر لهذا المفتاح هو ضبط الحجم المبدئي لجدول التجزئة إلى 1021، مما يوفر الذاكرة مرة أخرى على حساب إطالة وقت تشغيل الرابط. لكن لا يُفعل هذا إذا استُخدم مفتاح \fB\-\-hash\-size\fP. .Sp قد يُستخدم مفتاح \fB\-\-reduce\-memory\-overheads\fP أيضًا لتمكين مقايضات أخرى في الإصدارات المستقبلية من الرابط (linker). .IP \fB\-\-max\-cache\-size=\fP\fIالحجم\fP 4 .IX عنصر \-\-max\-cache\-size=الحجم \&\fBld\fP عادة ما يخبئ معلومات إعادة التوطين وجداول الرموز لملفات المدخلات في الذاكرة بحجم غير محدود. هذا الخيار يضبط الحد الأقصى لحجم الخبيئة إلى \fIsize\fP. ملاحظة \- إذا استُخدم خيار سطر الأوامر \&\fB\-\-no\-keep\-memory\fP، فإن الرابط يتصرف كما لو ضُبط الحد الأقصى لحجم الخبيئة إلى 0 \- أي لا يُحتفظ بشيء. .IP \fB\-\-build\-id\fP 4 .IX عنصر \-\-build\-id .PD 0 .IP \fB\-\-build\-id=\fP\fIنمط\fP 4 .IX عنصر \-\-build\-id=النمط .PD طلب إنشاء مقطع ملاحظة ELF باسم \f(CW\*(C`.note.gnu.build\-id\*(C'\fP أو مقطع COFF باسم \f(CW\*(C`.buildid\*(C'\fP. محتويات الملاحظة هي بتات فريدة تعرف هذا الملف المربوط. يمكن أن يكون \fIstyle\fP هو \&\f(CW\*(C`uuid\*(C'\fP لاستخدام 128 بتًا عشوائيًا؛ أو \f(CW\*(C`sha1\*(C'\fP لاستخدام تجزئة SHA1 بطول 160 بت، أو \f(CW\*(C`md5\*(C'\fP لاستخدام تجزئة MD5 بطول 128 بت، أو \f(CW\*(C`xx\*(C'\fP لاستخدام XXHASH بطول 128 بت على الأجزاء المعيارية من محتويات المخرجات؛ أو \f(CW\*(C`0x\fP\f(CIhexstring\f(CW\*(C'\fP لاستخدام سلسلة بتات مختارة محددة كعدد زوجي من الأرقام الست عشرية (تُتجاهل المحارف (\f(CW\*(C`\-\*(C'\fP و \&\f(CW\*(C`:\*(C'\fP) بين أزواج الأرقام). إذا حُذف \fIstyle\fP، يُستخدم \f(CW\*(C`sha1\*(C'\fP. .Sp تنتج أنماط \f(CW\*(C`md5\*(C'\fP و \f(CW\*(C`sha1\*(C'\fP و \f(CW\*(C`xx\*(C'\fP معرفاً يكون دائماً هو نفسه في ملف مخرج متطابق، ولكنه يكاد يكون فريداً بالتأكيد بين جميع ملفات المخرجات غير المتطابقة. ليس المقصود منه مقارنته كمجموع تحققي (checksum) لمحتويات الملف. قد يُغير ملف مرتبط لاحقاً بواسطة أدوات أخرى، ولكن سلسلة بتات معرف البناء (build ID) التي تحدد الملف المرتبط الأصلي لا تتغير. .Sp تمرير \f(CW\*(C`none\*(C'\fP للنمط \fIstyle\fP يعطل الإعداد من أي خيارات \&\f(CW\*(C`\-\-build\-id\*(C'\fP سابقة في سطر الأوامر. .IP \fB\-\-package\-metadata=\fP\fIJSON\fP 4 .IX عنصر \-\-package\-metadata=JSON يطلب إنشاء قسم ملاحظة ELF من نوع \f(CW\*(C`.note.package\*(C'\fP. محتويات الملاحظة تكون بتنسيق JSON، وفقاً لمواصفات البيانات الوصفية للحزمة. لمزيد من المعلومات انظر: https://systemd.io/ELF_PACKAGE_METADATA/ يدعم وسيط JSON ترميز النسبة المئوية وترميز %[string] التالي (حيث تشير string إلى الاسم في مراجع الأحرف المسماة في HTML): \fB%[comma]\fP للفاصلة \fB,\fP، و \fB%[lbrace]\fP للقوس \fB{\fP، و \&\fB%[quot]\fP لعلامة الاقتباس \fB"\fP، و \fB%[rbrace]\fP للقوس \fB}\fP، و \&\fB%[space]\fP لحرف المسافة. إذا كان وسيط JSON مفقوداً أو فارغاً، فإن هذا سيعطل إنشاء ملاحظة البيانات الوصفية، إذا كانت قد مُكنت بواسطة ظهور سابق لخيار \-\-package\-metadata. إذا بُني الرابط باستخدام libjansson، فستُفحص صحة سلسلة JSON. .PP يدعم رابط i386 PE الخيار \fB\-shared\fP، مما يؤدي إلى أن يكون المخرج مكتبة مرتبطة ديناميكيًا (DLL) بدلاً من ملف تنفيذي عادي. يجب تسمية المخرج \f(CW\*(C`*.dll\*(C'\fP عند استخدام هذا الخيار. بالإضافة إلى ذلك، يدعم الرابط تمامًا ملفات \&\f(CW\*(C`*.def\*(C'\fP القياسية، والتي يمكن تحديدها في سطر أوامر الرابط مثل ملف كائن (في الواقع، يجب أن تسبق الأرشيفات التي تصدر الرموز منها، لضمان ربطها، تمامًا مثل ملف كائن عادي). .PP بالإضافة إلى الخيارات المشتركة بين جميع الأهداف، يدعم رابط i386 PE خيارات إضافية لسطر الأوامر خاصة بهدف i386 PE. الخيارات التي تأخذ قيماً يمكن فصلها عن قيمها إما بمسافة أو بعلامة يساوي. .IP \fB\-\-add\-stdcall\-alias\fP 4 .IX عنصر \-\-add\-stdcall\-alias إذا أُعطيت، ستُصدر الرموز التي لها لاحقة stdcall (@\fInn\fP) كما هي وأيضا مع إزالة اللاحقة. [هذا الخيار خاص بمنفذ الرابط المخصص لـ i386 PE] .IP "\fB\-\-base\-file\fP \fIملف\fP" 4 .IX عنصر "\-\-base\-file الملف" استخدم \fIfile\fP كاسم لملف تُحفظ فيه العناوين الأساسية لكافة عمليات إعادة التوطين اللازمة لتوليد DLLs باستخدام \&\fIdlltool\fP. [هذا خيار خاص بـ i386 PE] .IP \fB\-\-dll\fP 4 .IX عنصر \-\-dll أنشئ DLL بدلاً من ملف تنفيذي عادي. يمكنك أيضًا استخدام \&\fB\-shared\fP أو تحديد \f(CW\*(C`LIBRARY\*(C'\fP في ملف \f(CW\*(C`.def\*(C'\fP المعطى. [هذا الخيار خاص بمنفذ الموصل المستهدف لـ i386 PE] .IP \fB\-\-enable\-long\-section\-names\fP 4 .IX عنصر \-\-enable\-long\-section\-names .PD 0 .IP \fB\-\-disable\-long\-section\-names\fP 4 .IX عنصر \-\-disable\-long\-section\-names .PD تضيف متغيرات PE لصيغة كائن COFF امتدادًا يسمح باستخدام أسماء أقسام أطول من ثمانية محارف، وهو الحد الطبيعي لـ COFF. مبدئيًا، لا يُسمح بهذه الأسماء إلا في ملفات الكائنات، لأن صور البرامج القابلة للتنفيذ المربوطة بالكامل لا تحمل جدول سلاسل COFF المطلوب لدعم الأسماء الأطول. كامتداد لغنو، من الممكن السماح باستخدامها في صور البرامج القابلة للتنفيذ أيضًا، أو (ربما بلا فائدة!) منعها في ملفات الكائنات، باستخدام هذين الخيارين. صور البرامج القابلة للتنفيذ التي تولد بهذه الأسماء الطويلة للأقسام غير قياسية قليلاً، لأنها تحمل جدول سلاسل، وقد تولد مخرجات مربكة عند فحصها بأدوات غير مدركة لـ PE من خارج غنو، مثل عارضي الملفات والمفرغين. ومع ذلك، يعتمد GDB على استخدام أسماء أقسام PE الطويلة للعثور على أقسام معلومات تنقيح Dwarf\-2 في صورة قابلة للتنفيذ في وقت التشغيل، ولذا إذا لم يُحدد أي من الخيارين في سطر الأوامر، فسيقوم \fBld\fP بتمكين أسماء الأقسام الطويلة، متجاوزًا السلوك المبدئي والصحيح تقنيًا، عندما يجد وجود معلومات تنقيح أثناء ربط صورة قابلة للتنفيذ وعدم تجريد الرموز. [هذا الخيار صالح لجميع المنافذ التي تستهدف PE في الرابط] .IP \fB\-\-enable\-stdcall\-fixup\fP 4 .IX عنصر \-\-enable\-stdcall\-fixup .PD 0 .IP \fB\-\-disable\-stdcall\-fixup\fP 4 .IX عنصر \-\-disable\-stdcall\-fixup .PD إذا وجد الرابط رمزًا لا يمكنه حله، فسيحاول إجراء "ربط ضبابي" من خلال البحث عن رمز معرف آخر يختلف فقط في تنسيق اسم الرمز (cdecl مقابل stdcall) وسيقوم بحل هذا الرمز بالربط مع المطابق له. على سبيل المثال، قد يتم ربط الرمز غير المعرف \f(CW\*(C`_foo\*(C'\fP بالدالة \&\f(CW\*(C`_foo@12\*(C'\fP، أو الرمز غير المعرف \f(CW\*(C`_bar@16\*(C'\fP بالدالة \f(CW\*(C`_bar\*(C'\fP. عندما يقوم الرابط بذلك، فإنه يطبع تحذيرًا، حيث كان من المفترض عادةً أن يفشل الربط، ولكن أحيانًا قد تحتاج مكتبات الاستيراد المولدة من ملفات dll لأطراف ثالثة لهذه الميزة لتكون صالحة للاستخدام. إذا حددت \fB\-\-enable\-stdcall\-fixup\fP، فسيتم تفعيل هذه الميزة بالكامل ولن يتم طباعة تحذيرات. وإذا حددت \&\fB\-\-disable\-stdcall\-fixup\fP، فسيتم تعطيل هذه الميزة وتعتبر مثل هذه الاختلافات أخطاء. [هذا الخيار خاص بمنفذ الرابط الموجه لـ i386 PE] .IP \fB\-\-leading\-underscore\fP 4 .IX عنصر \-\-leading\-underscore .PD 0 .IP \fB\-\-no\-leading\-underscore\fP 4 .IX عنصر \-\-no\-leading\-underscore .PD بالنسبة لمعظم الأهداف، يكون بادئة الرموز المبدئية هي شرطة سفلية وتُعرف في وصف الهدف. من خلال هذا الخيار، يمكن تعطيل أو تمكين بادئة الرمز المبدئية المتمثلة في الشرطة السفلية. .IP \fB\-\-export\-all\-symbols\fP 4 .IX عنصر \-\-export\-all\-symbols إذا أُعطي، فستُصَدر جميع الرموز العالمية في الكائنات المستخدمة لبناء DLL بواسطة DLL. لاحظ أن هذا هو المبدئي إذا لم يكن هناك رموز مصدرة بخلاف ذلك. عندما تُصَدر الرموز صراحة عبر ملفات DEF أو ضمنياً عبر سمات الدوال، فإن المبدئي هو عدم تصدير أي شيء آخر ما لم يُعطَ هذا الخيار. لاحظ أن الرموز \f(CW\*(C`DllMain@12\*(C'\fP، و \&\f(CW\*(C`DllEntryPoint@0\*(C'\fP، و \f(CW\*(C`DllMainCRTStartup@12\*(C'\fP، و \&\f(CW\*(C`impure_ptr\*(C'\fP لن تُصَدر آلياً. أيضاً، الرموز المستوردة من DLLs أخرى لن يُعاد تصديرها، وكذلك الرموز التي تحدد التخطيط الداخلي لـ DLL مثل تلك التي تبدأ بـ \f(CW\*(C`_head_\*(C'\fP أو تنتهي بـ \&\f(CW\*(C`_iname\*(C'\fP. بالإضافة إلى ذلك، لن تُصَدر أي رموز من \f(CW\*(C`libgcc\*(C'\fP، أو \&\f(CW\*(C`libstd++\*(C'\fP، أو \f(CW\*(C`libmingw32\*(C'\fP، أو \f(CW\*(C`crtX.o\*(C'\fP. الرموز التي تبدأ أسماؤها بـ \f(CW\*(C`_\|_rtti_\*(C'\fP أو \f(CW\*(C`_\|_builtin_\*(C'\fP لن تُصَدر، للمساعدة في مكتبات DLL الخاصة بـ ++C. أخيراً، هناك قائمة واسعة من رموز cygwin الخاصة التي لا تُصَدر (بشكل واضح، ينطبق هذا عند بناء DLLs لأهداف cygwin). هذه المستثنيات في cygwin هي: \f(CW\*(C`_cygwin_dll_entry@12\*(C'\fP، و \&\f(CW\*(C`_cygwin_crt0_common@8\*(C'\fP، و \f(CW\*(C`_cygwin_noncygwin_dll_entry@12\*(C'\fP، و \&\f(CW\*(C`_fmode\*(C'\fP، و \f(CW\*(C`_impure_ptr\*(C'\fP، و \f(CW\*(C`cygwin_attach_dll\*(C'\fP، و \&\f(CW\*(C`cygwin_premain0\*(C'\fP، و \f(CW\*(C`cygwin_premain1\*(C'\fP، و \f(CW\*(C`cygwin_premain2\*(C'\fP، و \&\f(CW\*(C`cygwin_premain3\*(C'\fP، و \f(CW\*(C`environ\*(C'\fP. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .IP "\fB\-\-exclude\-symbols\fP \fIرمز\fP\fB,\fP\fIرمز\fP\fB,...\fP" 4 .IX عنصر "\-\-exclude\-symbols الرمز,الرمز,..." يحدد قائمة بالرموز التي ينبغي عدم تصديرها تلقائياً. يمكن فصل أسماء الرموز بفواصل أو نقطتين رأسيين. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .IP \fB\-\-exclude\-all\-symbols\fP 4 .IX عنصر \-\-exclude\-all\-symbols يحدد أنه لا ينبغي تصدير أي رموز تلقائياً. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .IP \fB\-\-file\-alignment\fP 4 .IX عنصر \-\-file\-alignment تحديد محاذاة الملف. ستبدأ الأقسام في الملف دائماً عند إزاحات ملف تكون من مضاعفات هذا الرقم. القيمة الافتراضية هي 512. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .IP "\fB\-\-heap\fP \fIاحتياطي\fP" 4 .IX عنصر "\-\-heap reserve" .PD 0 .IP "\fB\-\-heap\fP \fIاحتياطي\fP\fB,\fP\fIإيداع\fP" 4 .IX عنصر "\-\-heap reserve,commit" .PD تحديد عدد بايتات الذاكرة التي سيتم حجزها (وتخصيصها اختيارياً) لاستخدامها كـ كومة (heap) لهذا البرنامج. الافتراضي هو حجز 1 ميجابايت وتخصيص 4 كيلوبايت. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .IP \fB\-\-kill\-at\fP 4 .IX عنصر \-\-kill\-at إذا أُعطيت، ستُزال لواحق stdcall (@\fInn\fP) من الرموز قبل تصديرها. [هذا الخيار خاص بمنفذ الرابط المخصص لـ i386 PE] .IP \fB\-\-large\-address\-aware\fP 4 .IX عنصر \-\-large\-address\-aware إذا أُعطيت، يُضبط البت المناسب في حقل "Characteristics" لترويسة COFF للإشارة إلى أن هذا الملف التنفيذي يدعم عناوين افتراضية أكبر من 2 غيغابايت. يجب استخدام هذا بالتزامن مع مفتاح /3GB أو /USERVA=\fIvalue\fP ميغابايت في قسم "[operating systems]" من BOOT.INI. وإلا، فلن يكون لهذا البت أي تأثير. [هذا الخيار خاص بمنافذ الرابط المخصصة لـ PE] .IP \fB\-\-disable\-large\-address\-aware\fP 4 .IX عنصر \-\-disable\-large\-address\-aware يعكس تأثير خيار \fB\-\-large\-address\-aware\fP السابق. هذا مفيد إذا كان \fB\-\-large\-address\-aware\fP مضبوطًا دائمًا بواسطة مشغل المترجم (مثل Cygwin gcc) والملف التنفيذي لا يدعم عناوين افتراضية أكبر من 2 جيجابايت. [هذا الخيار خاص بمنافذ الرابط الموجهة لـ PE] .IP "\fB\-\-major\-image\-version\fP \fIقيمة\fP" 4 .IX عنصر "\-\-major\-image\-version القيمة" يضبط الرقم الرئيسي لـ "إصدار الصورة". المبدئي هو 1. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-major\-os\-version\fP \fIقيمة\fP" 4 .IX عنصر "\-\-major\-os\-version القيمة" يضبط الرقم الرئيسي لـ "إصدار نظام التشغيل". المبدئي هو 4. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-major\-subsystem\-version\fP \fIقيمة\fP" 4 .IX عنصر "\-\-major\-subsystem\-version القيمة" يضبط الرقم الرئيسي لـ "إصدار النظام الفرعي". المبدئي هو 4. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-minor\-image\-version\fP \fIقيمة\fP" 4 .IX عنصر "\-\-minor\-image\-version القيمة" يضبط الرقم الفرعي لـ "إصدار الصورة". المبدئي هو 0. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-minor\-os\-version\fP \fIالقيمة\fP" 4 .IX عنصر "\-\-minor\-os\-version القيمة" يضبط الرقم الفرعي لـ "إصدار نظام التشغيل". المبدئي هو 0. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-minor\-subsystem\-version\fP \fIالقيمة\fP" 4 .IX عنصر "\-\-minor\-subsystem\-version القيمة" يضبط الرقم الفرعي لـ "إصدار النظام الفرعي". المبدئي هو 0. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-output\-def\fP \fIملف\fP" 4 .IX عنصر "\-\-output\-def الملف" سينشئ الرابط الملف \fIfile\fP الذي سيحتوي على ملف DEF مطابق لملف DLL الذي يولده الرابط. هذا الملف DEF (الذي يجب تسميته \f(CW\*(C`*.def\*(C'\fP) يمكن استخدامه لإنشاء مكتبة استيراد باستخدام \f(CW\*(C`dlltool\*(C'\fP أو يمكن استخدامه كمرجع للرموز المصدرة آلياً أو ضمنياً. [هذا الخيار خاص بمنفذ الرابط المستهدف لـ i386 PE] .IP \fB\-\-enable\-auto\-image\-base\fP 4 .IX عنصر \-\-enable\-auto\-image\-base .PD 0 .IP \fB\-\-enable\-auto\-image\-base=\fP\fIقيمة\fP 4 .IX عنصر \-\-enable\-auto\-image\-base=القيمة .PD اختر أساس الصورة لملفات DLL آلياً، وبدءاً اختيارياً من قيمة الأساس \&\fIvalue\fP، ما لم يُحدد واحد باستخدام معطى \f(CW\*(C`\-\-image\-base\*(C'\fP. عبر استخدام هاش مولد من اسم dll لإنشاء أسس صور فريدة لكل DLL، تُتجنب التصادمات وإعادات التوطين في الذاكرة التي قد تؤخر تنفيذ البرنامج. [هذا الخيار خاص بمنفذ i386 PE للواصل] .IP \fB\-\-disable\-auto\-image\-base\fP 4 .IX عنصر \-\-disable\-auto\-image\-base لا تولد قاعدة صورة فريدة آلياً. إذا لم تكن هناك قاعدة صورة محددة من قبل المستخدم (\f(CW\*(C`\-\-image\-base\*(C'\fP) فاستخدم الوضع المبدئي للمنصة. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .IP "\fB\-\-dll\-search\-prefix\fP \fIسلسلة\fP" 4 .IX عنصر "\-\-dll\-search\-prefix السلسلة" عند الربط ديناميكيًا بـ dll بدون مكتبة استيراد، ابحث عن \f(CW\*(C`.dll\*(C'\fP مفضلاً إياها على \&\f(CW\*(C`lib.dll\*(C'\fP. يسمح هذا السلوك بالتمييز بسهولة بين ملفات DLL المبنية للمنصات الفرعية المختلفة: native و cygwin و uwin و pw وغيرها. على سبيل المثال، تستخدم ملفات DLL الخاصة بـ cygwin عادةً \&\f(CW\*(C`\-\-dll\-search\-prefix=cyg\*(C'\fP. [هذا الخيار خاص بمنفذ المرابط المستهدف لـ i386 PE] .IP \fB\-\-enable\-auto\-import\fP 4 .IX عنصر \-\-enable\-auto\-import قم بإجراء ربط متطور لـ \f(CW\*(C`_symbol\*(C'\fP بـ \f(CW\*(C`_\|_imp_\|_symbol\*(C'\fP لعمليات استيراد البيانات (DATA) من مكتبات DLL، مما يتيح تجاوز آلية dllimport من جانب المستخدم والإشارة إلى أسماء رموز غير مجمّعة. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .Sp تتعلق الملاحظات التالية بالتنفيذ الأصلي للميزة وهي مهجورة في الوقت الحاضر لأهداف Cygwin و MinGW. .Sp ملاحظة: سيؤدي استخدام امتداد \*(Aqauto\-import\*(Aq إلى جعل قسم النص (text) في ملف الصورة قابلاً للكتابة. هذا لا يتوافق مع مواصفات تنسيق PE\-COFF المنشورة بواسطة Microsoft. .Sp ملاحظة \- سيؤدي استخدام امتداد \*(Aqauto\-import\*(Aq أيضاً إلى جعل البيانات المخصصة للقراءة فقط، والتي تُوضع عادةً في قسم .rdata، تُوضع في قسم .data بدلاً من ذلك. هذا من أجل الالتفاف على مشكلة في الثوابت (consts) مشروحة هنا: http://www.cygwin.com/ml/cygwin/2004\-09/msg01101.html .Sp يعمل استخدام \*(Aqauto\-import\*(Aq عموماً بشكل مباشر \-\- ولكن قد ترى أحياناً هذه الرسالة: .Sp "لا يمكن استيراد المتغير \*(Aq\*(Aq آلياً. يرجى قراءة وثائق \f(CW\*(C`\-\-enable\-auto\-import\*(C'\fP الخاصة بـ ld للتفاصيل." .Sp تحدث هذه الرسالة عندما يصل تعبير (فرعي) ما إلى عنوان ناتج في النهاية عن مجموع ثابتين (تسمح جداول استيراد Win32 بواحد فقط). تشمل الحالات التي قد يحدث فيها هذا الوصول إلى حقول أعضاء لمتغيرات الهياكل المستوردة من DLL، وكذلك استخدام فهرس ثابت في متغير مصفوفة مستورد من DLL. أي متغير متعدد الكلمات (مصفوفات، هياكل، long long، إلخ) قد يؤدي إلى حالة الخطأ هذه. ومع ذلك، وبغض النظر عن نوع البيانات الدقيق للمتغير المصدر المخالف، سيكتشفه ld دائمًا، ويُصدر التحذير، ويخرج. .Sp هناك عدة طرق لمعالجة هذه الصعوبة، بغض النظر عن نوع بيانات المتغير المصدّر: .Sp تتمثل إحدى الطرق في استخدام مفتاح \-\-enable\-runtime\-pseudo\-reloc. يترك هذا مهمة تعديل المراجع في كود العميل لبيئة وقت التشغيل، لذا تعمل هذه الطريقة فقط عندما تدعم بيئة وقت التشغيل هذه الميزة. .Sp الحل الثاني هو إجبار أحد \*(Aqالثوابت\*(Aq على أن يكون متغيراً \-\- أي غير معروف وغير قابل للتحسين في وقت الترجمة. بالنسبة للمصفوفات، هناك احتمالان: أ) جعل المُفهرس (عنوان المصفوفة) متغيراً، أو ب) جعل الفهرس \*(Aqالثابت\*(Aq متغيراً. وهكذا: .Sp .Vb 3 \& extern type extern_array[]; \& extern_array[1] \-\-> \& { volatile type *t=extern_array; t[1] } .Ve .Sp أو .Sp .Vb 3 \& extern type extern_array[]; \& extern_array[1] \-\-> \& { volatile int t=1; extern_array[t] } .Ve .Sp بالنسبة للهياكل (ومعظم أنواع البيانات الأخرى متعددة الكلمات)، فإن الخيار الوحيد هو جعل الهيكل نفسه (أو الـ long long، أو غيره...) متغيرًا: .Sp .Vb 3 \& extern struct s extern_struct; \& extern_struct.field \-\-> \& { volatile struct s *t=&extern_struct; t\->field } .Ve .Sp أو .Sp .Vb 3 \& extern long long extern_ll; \& extern_ll \-\-> \& { volatile long long * local_ll=&extern_ll; *local_ll } .Ve .Sp الطريقة الثالثة للتعامل مع هذه الصعوبة هي التخلي عن \&\*(Aqauto\-import\*(Aq للرمز المخالف وتمييزه بـ \&\f(CW\*(C`_\|_declspec(dllimport)\*(C'\fP. ومع ذلك، يتطلب ذلك عملياً استخدام #defines في وقت الترجمة للإشارة إلى ما إذا كنت تبني DLL، أو تبني كود عميل سيرتبط بـ DLL، أو مجرد بناء/ربط مكتبة ساكنة. عند الاختيار بين الطرق المختلفة لحل مشكلة "العنوان المباشر بإزاحة ثابتة"، يجب عليك مراعاة الاستخدام النموذجي في العالم الحقيقي: .Sp الأصلي: .Sp .Vb 7 \& \-\-foo.h \& extern int arr[]; \& \-\-foo.c \& #include "foo.h" \& void main(int argc, char **argv){ \& printf("%d\en",arr[1]); \& } .Ve .Sp الحل 1: .Sp .Vb 9 \& \-\-foo.h \& extern int arr[]; \& \-\-foo.c \& #include "foo.h" \& void main(int argc, char **argv){ \& /* هذا الحل البديل مخصص لنظامي win32 وcygwin؛ لا تعمد إلى "التحسين" */ \& volatile int *parr = arr; \& printf("%d\en",parr[1]); \& } .Ve .Sp الحل 2: .Sp .Vb 10 \& \-\-foo.h \& /* ملاحظة: يُفترض التصدير التلقائي (no _\|_declspec(dllexport)) */ \& #if (defined(_WIN32) || defined(_\|_CYGWIN_\|_)) && \e \& !(defined(FOO_BUILD_DLL) || defined(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\en",arr[1]); \& } .Ve .Sp هناك طريقة رابعة لتجنب هذه المشكلة وهي إعادة صياغة كود مكتبتك لاستخدام واجهة وظيفية بدلاً من واجهة بيانات للمتغيرات المسيئة (مثلاً دالات الوصول \fBset_foo()\fP و \fBget_foo()\fP). .IP \fB\-\-disable\-auto\-import\fP 4 .IX عنصر \-\-disable\-auto\-import لا تحاول إجراء ربط متطور لـ \f(CW\*(C`_symbol\*(C'\fP بـ \&\f(CW\*(C`_\|_imp_\|_symbol\*(C'\fP لعمليات استيراد البيانات (DATA) من مكتبات DLL. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .IP \fB\-\-enable\-runtime\-pseudo\-reloc\fP 4 .IX عنصر \-\-enable\-runtime\-pseudo\-reloc إذا كان الكود الخاص بك يحتوي على تعبيرات موصوفة في قسم \-\-enable\-auto\-import، أي استيرادات DATA من DLL بإزاحة غير صفرية، فإن هذا المفتاح سيُنشئ متجهاً من \*(Aqruntime pseudo relocations\*(Aq التي يمكن استخدامها بواسطة بيئة وقت التشغيل لضبط المراجع لهذه البيانات في كود العميل الخاص بك. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .IP \fB\-\-disable\-runtime\-pseudo\-reloc\fP 4 .IX عنصر \-\-disable\-runtime\-pseudo\-reloc لا تنشئ عمليات إعادة توطين وهمية لاستيرادات البيانات ذات الإزاحة غير الصفرية من مكتبات DLL. [هذا الخيار خاص بمنفذ i386 PE المستهدف للرابط] .IP \fB\-\-enable\-extra\-pe\-debug\fP 4 .IX عنصر \-\-enable\-extra\-pe\-debug أظهر معلومات تنقيح إضافية متعلقة بـ thunking لرموز الاستيراد التلقائي. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP \fB\-\-section\-alignment\fP 4 .IX عنصر \-\-section\-alignment يضبط موازاة الأقسام. الأقسام في الذاكرة ستبدأ دائمًا عند عناوين هي مضاعفات لهذا الرقم. المبدئي هو 0x1000. [هذا الخيار خاص بمنفذ الموصل الموجه لـ i386 PE] .IP "\fB\-\-stack\fP \fIاحتياطي\fP" 4 .IX عنصر "\-\-stack reserve" .PD 0 .IP "\fB\-\-stack\fP \fIاحتياطي\fP\fB,\fP\fIإيداع\fP" 4 .IX عنصر "\-\-stack reserve,commit" .PD تحديد عدد بايتات الذاكرة التي سيتم حجزها (وتخصيصها اختيارياً) لاستخدامها كـ مكدس (stack) لهذا البرنامج. الافتراضي هو حجز 2 ميجابايت وتخصيص 4 كيلوبايت. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .IP "\fB\-\-subsystem\fP \fIأي\fP" 4 .IX عنصر "\-\-subsystem which" .PD 0 .IP "\fB\-\-subsystem\fP \fIأي\fP\fB:\fP\fIرئيس\fP" 4 .IX عنصر "\-\-subsystem which:major" .IP "\fB\-\-subsystem\fP \fIأي\fP\fB:\fP\fIرئيس\fP\fB.\fP\fIفرعي\fP" 4 .IX عنصر "\-\-subsystem which:major.minor" .PD يحدد النظام الفرعي الذي سيتم تنفيذ برنامجك تحته. القيم المسموح بها لـ \fIwhich\fP هي \f(CW\*(C`native\*(C'\fP و \f(CW\*(C`windows\*(C'\fP و \&\f(CW\*(C`console\*(C'\fP و \f(CW\*(C`posix\*(C'\fP و \f(CW\*(C`xbox\*(C'\fP. يمكنك اختيارياً ضبط إصدار النظام الفرعي أيضاً. تُقبل القيم الرقمية أيضاً لـ \&\fIwhich\fP. [هذا الخيار خاص بإصدار الرابط المستهدف لـ i386 PE] .Sp تضبط الخيارات التالية الأعلام في حقل \f(CW\*(C`DllCharacteristics\*(C'\fP في ترويسة ملف PE: [هذه الخيارات خاصة بمنافذ الرابط التي تستهدف PE] .IP \fB\-\-high\-entropy\-va\fP 4 .IX عنصر \-\-high\-entropy\-va .PD 0 .IP \fB\-\-disable\-high\-entropy\-va\fP 4 .IX عنصر \-\-disable\-high\-entropy\-va .PD الصورة متوافقة مع عشوائية تخطيط مساحة العنوان (ASLR) ذات 64 بت. هذا الخيار مفعل افتراضياً لصور PE ذات 64 بت في أهداف MinGW. .Sp يتضمن هذا الخيار أيضًا \fB\-\-dynamicbase\fP و \&\fB\-\-enable\-reloc\-section\fP. .IP \fB\-\-dynamicbase\fP 4 .IX عنصر \-\-dynamicbase .PD 0 .IP \fB\-\-disable\-dynamicbase\fP 4 .IX عنصر \-\-disable\-dynamicbase .PD قد يتم تغيير موقع عنوان قاعدة الصورة باستخدام عشوائية تخطيط مساحة العنوان (ASLR). تم تقديم هذه الميزة مع MS Windows Vista لأهداف i386 PE. هذا الخيار مفعل افتراضيًا لأهداف MinGW ولكن يمكن تعطيله عبر الخيار \fB\-\-disable\-dynamicbase\fP. يتضمن هذا الخيار أيضًا \fB\-\-enable\-reloc\-section\fP. .IP \fB\-\-forceinteg\fP 4 .IX عنصر \-\-forceinteg .PD 0 .IP \fB\-\-disable\-forceinteg\fP 4 .IX عنصر \-\-disable\-forceinteg .PD تُفرض فحوصات سلامة الكود. هذا الخيار معطل مبدئيًا. .IP \fB\-\-nxcompat\fP 4 .IX عنصر \-\-nxcompat .PD 0 .IP \fB\-\-disable\-nxcompat\fP 4 .IX عنصر \-\-disable\-nxcompat .PD الصورة متوافقة مع منع تنفيذ البيانات (DEP). تم تقديم هذه الميزة مع MS Windows XP SP2 لأهداف i386 PE. الخيار مفعل افتراضيًا لأهداف MinGW. .IP \fB\-\-no\-isolation\fP 4 .IX عنصر \-\-no\-isolation .PD 0 .IP \fB\-\-disable\-no\-isolation\fP 4 .IX عنصر \-\-disable\-no\-isolation .PD على الرغم من أن الصورة تدعم العزل، إلا أنه لا يجب عزلها. هذا الخيار معطل افتراضياً. .IP \fB\-\-no\-seh\fP 4 .IX عنصر \-\-no\-seh .PD 0 .IP \fB\-\-disable\-no\-seh\fP 4 .IX عنصر \-\-disable\-no\-seh .PD الصورة لا تستخدم SEH. لا يجوز استدعاء أي معالج SE من هذه الصورة. هذا الخيار معطل افتراضيًا. .IP \fB\-\-no\-bind\fP 4 .IX عنصر \-\-no\-bind .PD 0 .IP \fB\-\-disable\-no\-bind\fP 4 .IX عنصر \-\-disable\-no\-bind .PD لا تربط هذه الصورة. هذا الخيار معطل مبدئياً. .IP \fB\-\-wdmdriver\fP 4 .IX عنصر \-\-wdmdriver .PD 0 .IP \fB\-\-disable\-wdmdriver\fP 4 .IX عنصر \-\-disable\-wdmdriver .PD يستخدم المشغل نموذج مشغل MS Windows. هذا الخيار معطل افتراضيًا. .IP \fB\-\-tsaware\fP 4 .IX عنصر \-\-tsaware .PD 0 .IP \fB\-\-disable\-tsaware\fP 4 .IX عنصر \-\-disable\-tsaware .PD الصورة مدركة لـ Terminal Server. هذا الخيار معطل افتراضيًا. .IP \fB\-\-insert\-timestamp\fP 4 .IX عنصر \-\-insert\-timestamp .PD 0 .IP \fB\-\-no\-insert\-timestamp\fP 4 .IX عنصر \-\-no\-insert\-timestamp .PD إدراج طابع زمني حقيقي في الصورة. هذا هو السلوك الافتراضي لأنه يطابق الكود القديم ويعني أن الصورة ستعمل مع أدوات أخرى مملوكة (proprietary). المشكلة في هذا الافتراض هي أنه سيؤدي إلى إنتاج صور مختلفة قليلاً في كل مرة يتم فيها ربط نفس المصادر. يمكن استخدام الخيار \fB\-\-no\-insert\-timestamp\fP لإدراج قيمة صفرية للطابع الزمني، مما يضمن أن الملفات الثنائية المنتجة من مصادر متطابقة ستكون متطابقة عند المقارنة. .Sp إذا كان الخيار \fB\-\-insert\-timestamp\fP نشطا، فإن الوقت المدرج هو إما وقت عملية الربط، أو عدد الثواني منذ حقبة يونكس المحددة في متغير البيئة \&\f(CW\*(C`SOURCE_DATE_EPOCH\*(C'\fP إذا كان معرفا. .IP \fB\-\-enable\-reloc\-section\fP 4 .IX عنصر \-\-enable\-reloc\-section .PD 0 .IP \fB\-\-disable\-reloc\-section\fP 4 .IX عنصر \-\-disable\-reloc\-section .PD أنشئ جدول إعادة التوطين الأساسي، وهو ضروري إذا حُملت الصورة في قاعدة صورة مختلفة عما هو محدد في ترويسة PE. هذا الخيار ممكن مبدئيًا. .PP يستخدم هدف C6X uClinux صيغة ثنائية تسمى DSBT لدعم المكتبات المشتركة. تحتاج كل مكتبة مشتركة في النظام إلى فهرس فريد؛ وتستخدم جميع الملفات القابلة للتنفيذ الفهرس 0. .IP "\fB\-\-dsbt\-size\fP \fIالحجم\fP" 4 .IX عنصر "\-\-dsbt\-size size" يضبط هذا الخيار عدد المدخلات في DSBT للملف التنفيذي الحالي أو المكتبة المشتركة إلى \fIsize\fP. المبدئي هو إنشاء جدول بـ 64 مدخلة. .IP "\fB\-\-dsbt\-index\fP \fIالفهرس\fP" 4 .IX عنصر "\-\-dsbt\-index index" يضبط هذا الخيار فهرس DSBT للملف التنفيذي الحالي أو المكتبة المشتركة إلى \fIindex\fP. القيمة المبدئية هي 0، وهي مناسبة لتوليد الملفات التنفيذية. إذا أُنتجت مكتبة مشتركة بفهرس DSBT قيمته 0، فستُنسخ إعادة التوطين \&\f(CW\*(C`R_C6000_DSBT_INDEX\*(C'\fP إلى ملف المخرج. .Sp يعطل مفتاح \fB\-\-no\-merge\-exidx\-entries\fP دمج مدخلات exidx المتجاورة في معلومات حل إطارات المكدس (frame unwind info). .IP \fB\-\-branch\-stub\fP 4 .IX عنصر \-\-branch\-stub يُمكّن هذا الخيار تخفيف فروع الموصل عن طريق إدراج أقسام فرعية بديلة عند الحاجة لتوسيع نطاق الفروع. هذا الخيار غير مطلوب عادةً لأن C\-SKY تدعم تعليمات الفرع والاستدعاء التي يمكنها الوصول إلى نطاق الذاكرة الكامل، ويُعالج تخفيف الفروع عادةً بواسطة المترجم أو المجمّع. .IP \fB\-\-stub\-group\-size=\fP\fIN\fP 4 .IX عنصر \-\-stub\-group\-size=N يسمح هذا الخيار بتحكم أدق في إنشاء أقسام الموصل الفرعية البديلة (stubs). يضبط الحجم الأقصى لمجموعة من أقسام المدخلات التي يمكن التعامل معها بواسطة قسم بديل واحد. تحدد القيمة السالبة لـ \fIN\fP مواقع الأقسام البديلة بعد فروعها، بينما تسمح القيمة الموجبة للأقسام البديلة بالظهور إما قبل أو بعد الفروع. تشير القيم \&\fB1\fP أو \fB\-1\fP إلى وجوب اختيار الموصل للقيم المبدئية المناسبة. .PP تدعم روابط 68HC11 و 68HC12 خيارات محددة للتحكم في تخطيط تبديل بنوك الذاكرة وتوليد شيفرة trampoline. .IP \fB\-\-no\-trampoline\fP 4 .IX عنصر \-\-no\-trampoline يعطل هذا الخيار توليد الـ trampoline. مبدئيًا، يُولد trampoline لكل دالة بعيدة تُستدعى باستخدام تعليمات \f(CW\*(C`jsr\*(C'\fP (يحدث هذا عند أخذ مؤشر لدالة بعيدة). .IP "\fB\-\-bank\-window\fP \fIاسم\fP" 4 .IX عنصر "\-\-bank\-window الاسم" يشير هذا الخيار للموصل إلى اسم منطقة الذاكرة في مواصفة \fBMEMORY\fP التي تصف نافذة بنك الذاكرة. ثم يُستخدم تعريف هذه المنطقة بواسطة الموصل لحساب الصفحات والعناوين داخل نافذة الذاكرة. .PP الخيارات التالية مدعومة للتحكم في معالجة توليد GOT عند الربط لأهداف 68K. .IP \fB\-\-got=\fP\fIالنوع\fP 4 .IX عنصر \-\-got=النوع يخبر هذا الخيار الموصل بأي مخطط لتوليد GOT سيُستخدم. يجب أن يكون \&\fItype\fP واحدًا من \fBsingle\fP أو \fBnegative\fP أو \&\fBmultigot\fP أو \fBtarget\fP. لمزيد من المعلومات، ارجع إلى مدخلة Info لـ \fIld\fP. .PP الخيارات التالية مدعومة للتحكم في توليد تعليمات microMIPS وفحوصات إعادة توطين الفروع لانتقالات وضع ISA عند الربط لأهداف MIPS. .IP \fB\-\-insn32\fP 4 .IX عنصر \-\-insn32 .PD 0 .IP \fB\-\-no\-insn32\fP 4 .IX عنصر \-\-no\-insn32 .PD تتحكم هذه الخيارات في اختيار تعليمات microMIPS المستخدمة في الكود المولد بواسطة الرابط، مثل ذلك الموجود في PLT أو بدائل الربط الكسول، أو في الاسترخاء. إذا استُخدم \fB\-\-insn32\fP، فإن الرابط يستخدم فقط ترميزات التعليمات ذات 32 بت. مبدئيًا أو إذا استُخدم \fB\-\-no\-insn32\fP، تُستخدم جميع ترميزات التعليمات، بما في ذلك تلك ذات 16 بت حيثما كان ذلك ممكنًا. .IP \fB\-\-ignore\-branch\-isa\fP 4 .IX عنصر \-\-ignore\-branch\-isa .PD 0 .IP \fB\-\-no\-ignore\-branch\-isa\fP 4 .IX عنصر \-\-no\-ignore\-branch\-isa .PD تتحكم هذه الخيارات في فحوصات إعادة توطين الفروع لانتقالات وضع ISA غير الصالحة. إذا استُخدم \fB\-\-ignore\-branch\-isa\fP، فإن الرابط يقبل أي عمليات إعادة توطين للفروع ويُفقد أي انتقال مطلوب لوضع ISA في حساب إعادة التوطين، باستثناء بعض حالات تعليمات \f(CW\*(C`BAL\*(C'\fP التي تلبي شروط الاسترخاء وتُحول إلى تعليمات \f(CW\*(C`JALX\*(C'\fP مكافئة عند حساب إعادة التوطين المرتبطة. مبدئيًا أو إذا استُخدم \fB\-\-no\-ignore\-branch\-isa\fP، يُجرى فحص يؤدي فيه فقدان انتقال وضع ISA إلى حدوث خطأ. .IP \fB\-\-compact\-branches\fP 4 .IX عنصر \-\-compact\-branches .PD 0 .IP \fB\-\-no\-compact\-branches\fP 4 .IX عنصر \-\-no\-compact\-branches .PD تتحكم هذه الخيارات في توليد التعليمات المدمجة بواسطة الرابط في إدخالات PLT لـ MIPS R6. .PP بالنسبة لهدف pdp11\-aout، يمكن إنتاج ثلاثة أشكال من تنسيق المخرجات كما هو محدد بالخيارات التالية. الشكل المبدئي لـ pdp11\-aout هو خيار \fB\-\-omagic\fP، بينما للأهداف الأخرى يكون \fB\-\-nmagic\fP هو المبدئي. عُرف الخيار \fB\-\-imagic\fP فقط لهدف pdp11\-aout، بينما تُشرح الخيارات الأخرى هنا كما تنطبق على هدف pdp11\-aout. .IP \fB\-N\fP 4 .IX عنصر \-N .PD 0 .IP \fB\-\-omagic\fP 4 .IX عنصر \-\-omagic .PD تعليم المخرجات كـ \f(CW\*(C`OMAGIC\*(C'\fP (0407) في ترويسة \fIa.out\fP للإشارة إلى أن مقطع النص ليس محمياً من الكتابة ولا مشتركاً. بما أن كلا قسمي النص والبيانات قابلان للقراءة والكتابة، يتم تخصيص قسم البيانات مباشرة بعد مقطع النص. هذا هو أقدم تنسيق لبرامج PDP11 التنفيذية وهو المبدئي لـ \fBld\fP على أنظمة PDP11 Unix منذ البداية وحتى 2.11BSD. .IP \fB\-n\fP 4 .IX عنصر \-n .PD 0 .IP \fB\-\-nmagic\fP 4 .IX عنصر \-\-nmagic .PD تعليم المخرجات كـ \f(CW\*(C`NMAGIC\*(C'\fP (0410) في ترويسة \fIa.out\fP للإشارة إلى أنه عند تنفيذ ملف المخرجات، سيكون جزء النص للقراءة فقط وقابلاً للمشاركة بين جميع العمليات التي تنفذ نفس الملف. يتضمن ذلك نقل مناطق البيانات إلى أول حدود صفحة ممكنة بحجم 8 كيلوبايت تلي نهاية النص. ينشئ هذا الخيار تنسيق \fIpure executable\fP. .IP \fB\-z\fP 4 .IX عنصر \-z .PD 0 .IP \fB\-\-imagic\fP 4 .IX عنصر \-\-imagic .PD تعليم المخرجات كـ \f(CW\*(C`IMAGIC\*(C'\fP (0411) في ترويسة \fIa.out\fP للإشارة إلى أنه عند تنفيذ ملف المخرجات، سيتم تحميل مناطق نص البرنامج والبيانات في مساحات عناوين منفصلة باستخدام ميزة تقسيم مساحة التعليمات والبيانات لوحدة إدارة الذاكرة في النماذج الأكبر من PDP11. هذا يضاعف مساحة العناوين المتاحة للبرنامج. مقطع النص نقي مرة أخرى، ومحمي من الكتابة، وقابل للمشاركة. الفرق الوحيد في تنسيق المخرجات بين هذا الخيار والخيارات الأخرى، بالإضافة إلى الرقم السحري، هو أن كلا من قسمي النص والبيانات يبدآن عند الموقع 0. اختار الخيار \fB\-z\fP هذا التنسيق في 2.11BSD. ينشئ هذا الخيار تنسيق \fIseparate executable\fP. .IP \fB\-\-no\-omagic\fP 4 .IX عنصر \-\-no\-omagic يكافئ \fB\-\-nmagic\fP لـ pdp11\-aout. .SH البيئة .IX الترويسة البيئة يمكنك تغيير سلوك \fBld\fP باستخدام متغيرات البيئة \&\f(CW\*(C`GNUTARGET\*(C'\fP و \&\f(CW\*(C`LDEMULATION\*(C'\fP و \f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fP. .PP يحدد \&\f(CW\*(C`GNUTARGET\*(C'\fP تنسيق كائن ملف المدخلات إذا لم تستخدم \fB\-b\fP (أو مرادفه \fB\-\-format\fP). يجب أن تكون قيمته واحدة من أسماء BFD لتنسيق مدخلات. إذا لم يوجد \&\f(CW\*(C`GNUTARGET\*(C'\fP في البيئة، يستخدم \fBld\fP التنسيق الطبيعي للهدف. إذا ضُبط \f(CW\*(C`GNUTARGET\*(C'\fP على \f(CW\*(C`default\*(C'\fP، فحينئذٍ تحاول BFD اكتشاف تنسيق المدخلات عن طريق فحص ملفات المدخلات الثنائية؛ تنجح هذه الطريقة غالباً، ولكن هناك التباسات محتملة، حيث لا توجد طريقة لضمان أن الرقم السحري المستخدم لتحديد تنسيقات ملفات الكائنات فريد. ومع ذلك، فإن إجراء الضبط لـ BFD على كل نظام يضع التنسيق التقليدي لهذا النظام أولاً في قائمة البحث، لذا تُحل الالتباسات لصالح التقليد. .PP يحدد \&\f(CW\*(C`LDEMULATION\*(C'\fP المحاكاة المبدئية إذا لم تستخدم خيار \&\fB\-m\fP. يمكن أن تؤثر المحاكاة على جوانب متنوعة من سلوك الرابط، وخاصة سكربت الرابط المبدئي. يمكنك سرد المحاكيات المتاحة باستخدام خيارات \fB\-\-verbose\fP أو \fB\-V\fP. إذا لم يُستخدم خيار \fB\-m\fP، ولم يُعرف متغير البيئة \f(CW\*(C`LDEMULATION\*(C'\fP، فإن المحاكاة المبدئية تعتمد على كيفية ضبط الرابط. .PP عادةً ما يقوم الرابط افتراضيًا بفك تشابك (demangling) الرموز. ومع ذلك، إذا جرى ضبط \&\f(CW\*(C`COLLECT_NO_DEMANGLE\*(C'\fP في البيئة، فسيقوم افتراضيًا بعدم فك تشابك الرموز. يتم استخدام متغير البيئة هذا بطريقة مماثلة بواسطة برنامج غلاف الرابط \f(CW\*(C`gcc\*(C'\fP. يمكن تجاوز الافتراضي بواسطة الخيارين \fB\-\-demangle\fP و \fB\-\-no\-demangle\fP. .PP إذا كان خيار \fB\-\-insert\-timestamp\fP الخاص بـ PE/COFF نشطًا وجرى تعريف متغير البيئة \&\fBSOURCE_DATE_EPOCH\fP، فسيتم إدراج قيمة الطابع الزمني في هذا المتغير في رأس COFF بدلاً من الوقت الحالي. .PP إذا جرى تعريف متغير البيئة \f(CW\*(C`LD_STATS\*(C'\fP، فسيتم تسجيل معلومات استخدام موارد الرابط، تمامًا كما لو تم استخدام خيار \&\fB\-\-stats\fP. إذا كانت قيمة المتغير \f(CW\*(C`LD_STATS\*(C'\fP سلسلة نصية، فسيتم استخدامها كاسم لملف يجب تخزين المعلومات فيه. بخلاف ذلك، سيتم إرسال المعلومات إلى دفق المخرجات القياسية. .SH "انظر أيضًا" .IX الترويسة "انظر أيضًا" \&\fBar\fP\|(1)، و \fBnm\fP\|(1)، و \fBobjcopy\fP\|(1)، و \fBobjdump\fP\|(1)، و \fBreadelf\fP\|(1) ومدخلات معلومات Info الخاصة بـ \fIbinutils\fP و \&\fIld\fP. .SH "حقوق النسخ" .IX الترويسة "حقوق النسخ" حقوق الطبع والنشر (c) لعام 1991\-2026 لمؤسسة البرمجيات الحرة، المحدودة. .PP يُمنح الإذن بنسخ وتوزيع و/أو تعديل هذا المستند بموجب شروط رخصة جنو للوثائق الحرة (GNU Free Documentation License)، الإصدار 1.3 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ مع عدم وجود أقسام ثابتة، وبدون نصوص غلاف أمامي، وبدون نصوص غلاف خلفي. نُسخة من الرخصة مضمنة في القسم المعنون "GNU Free Documentation License". .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .