هذا هو الأمر alpha-linux-gnu-ld.bfd الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
LD - رابط جنو
موجز
لد [الخيارات] objfile
الوصف
ld يجمع بين عدد من ملفات الكائنات والأرشيف ، وينقل بياناتهم ويربط الرمز
المراجع. عادةً ما تكون الخطوة الأخيرة في تجميع البرنامج هي التشغيل ld.
ld يقبل ملفات Linker Command Language المكتوبة في مجموعة شاملة من AT & T's Link Editor
بناء جملة لغة الأمر ، لتوفير تحكم واضح وكامل في عملية الربط.
لا تصف صفحة الدليل هذه لغة الأمر ؛ انظر ال ld الدخول في "المعلومات" بالكامل
تفاصيل حول لغة الأوامر والجوانب الأخرى لرابط جنو.
هذا الإصدار من ld يستخدم مكتبات BFD للأغراض العامة للعمل على ملفات الكائنات. هذه
يسمح ld لقراءة ملفات الكائنات ودمجها وكتابتها في العديد من التنسيقات المختلفة --- لـ
على سبيل المثال ، COFF أو "a.out". قد يتم ربط التنسيقات المختلفة معًا لإنتاج أي منها
نوع متاح من ملف الكائن.
بصرف النظر عن مرونته ، فإن رابط جنو أكثر فائدة من الروابط الأخرى في التزويد
معلومات التشخيص. يتخلى العديد من الروابط عن التنفيذ فور مواجهة ملف
خطأ؛ متى أمكن، ld يواصل التنفيذ ، مما يسمح لك بتحديد الأخطاء الأخرى
(أو ، في بعض الحالات ، للحصول على ملف الإخراج على الرغم من الخطأ).
رابط جنو ld يهدف إلى تغطية مجموعة واسعة من المواقف ، وأن يكون متوافقًا معها
قدر الإمكان مع الروابط الأخرى. نتيجة لذلك ، لديك العديد من الخيارات للتحكم في ملفات
السلوك.
OPTIONS
يدعم الرابط عددًا كبيرًا من خيارات سطر الأوامر ، ولكن في الممارسة الفعلية القليل منها
تستخدم في أي سياق معين. على سبيل المثال ، الاستخدام المتكرر لـ ld هو الارتباط
ملفات كائنات Unix القياسية على نظام Unix القياسي المدعوم. على مثل هذا النظام ، ل
ربط ملف "hello.o":
أنا أفعل /lib/crt0.o hello.o -lc
هذا يقول ld لإنتاج ملف يسمى الناتج نتيجة ربط الملف
"/lib/crt0.o" مع "hello.o" والمكتبة "libc.a" ، والتي ستأتي من المعيار
أدلة البحث. (انظر مناقشة -l الخيار أدناه.)
بعض خيارات سطر الأوامر إلى ld يمكن تحديدها في أي نقطة في سطر الأوامر.
ومع ذلك ، فإن الخيارات التي تشير إلى الملفات ، مثل -l or -T، يتسبب في قراءة الملف في
النقطة التي يظهر عندها الخيار في سطر الأوامر ، بالنسبة إلى ملفات الكائن و
خيارات الملفات الأخرى. سيكون تكرار الخيارات بخلاف الملفات باستخدام وسيطة مختلفة
لا يوجد تأثير آخر ، أو تجاوز الأحداث السابقة (تلك الواقعة على اليسار في الأمر
سطر) من هذا الخيار. الخيارات التي قد تكون محددة بشكل هادف أكثر من مرة هي
المذكورة في الأوصاف أدناه.
الوسائط غير الاختيارية هي ملفات أو أرشيفات كائن يجب ربطها معًا. أنهم
قد تتبع ، أو تسبق ، أو تختلط بخيارات سطر الأوامر ، باستثناء ملف الكائن
لا يجوز وضع الحجة بين الخيار وحجته.
عادة ما يتم استدعاء الرابط مع ملف كائن واحد على الأقل ، ولكن يمكنك تحديد ملف آخر
أشكال ملفات الإدخال الثنائية باستخدام -l, -Rولغة أوامر البرنامج النصي. لو لا ثنائي
يتم تحديد ملفات الإدخال على الإطلاق ، ولا ينتج الرابط أي إخراج ، ويصدر ملف
الرسالة لا إدخال ملفات.
إذا تعذر على الرابط التعرف على تنسيق ملف كائن ، فسيفترض أنه ملف
نص رابط. يعمل البرنامج النصي المحدد بهذه الطريقة على زيادة البرنامج النصي للرابط الرئيسي المستخدم لـ
الارتباط (إما البرنامج النصي للرابط الافتراضي أو المحدد باستخدام -T). هذا
تسمح الميزة للرابط بالارتباط بملف يبدو أنه كائن أو ملف
أرشيف ، ولكن في الواقع يحدد فقط بعض قيم الرموز ، أو يستخدم "INPUT" أو "GROUP" ل
تحميل كائنات أخرى. إن تحديد برنامج نصي بهذه الطريقة يؤدي فقط إلى زيادة قيمة الرابط الرئيسي
النصي ، مع وضع الأوامر الإضافية بعد النص الرئيسي ؛ استخدم ال -T خيار ليحل محل
نص الرابط الافتراضي بالكامل ، لكن لاحظ تأثير الأمر "INSERT".
بالنسبة للخيارات التي تكون أسماؤها حرفًا واحدًا ، يجب أن تتبع وسيطات الخيار إما
حرف خيار بدون مسافة بيضاء متداخلة ، أو يتم تقديمه كوسيطات منفصلة
فورًا بعد الخيار الذي يتطلبها.
بالنسبة للخيارات التي تكون أسماؤها متعددة الأحرف ، يمكن أن تسبق شَرطة واحدة أو اثنتان
اسم الخيار على سبيل المثال، -رمز التتبع و - رمز التتبع متكافئة. ملاحظة - هناك
هو استثناء واحد لهذه القاعدة. خيارات متعددة للأحرف تبدأ بحرف صغير "o"
يمكن أن يسبقه شرطتان فقط. هذا لتقليل الالتباس مع -o اختيار. وبالتالي
مثلا -وماجيك يعيّن اسم ملف الإخراج إلى سحر في حين --أوماجيك يحدد NMAGIC
علم على الإخراج.
يجب فصل وسائط الخيارات متعددة الأحرف عن اسم الخيار بامتداد
يساوي التوقيع ، أو يتم إعطاؤه كوسيطات منفصلة بعد الخيار الذي
يتطلب منهم. على سبيل المثال، - رمز التتبع فو و - رمز التتبع = foo متكافئة.
يتم قبول الاختصارات الفريدة لأسماء الخيارات متعددة الأحرف.
ملاحظة --- إذا تم استدعاء الرابط بشكل غير مباشر ، عبر برنامج تشغيل مترجم (على سبيل المثال دول مجلس التعاون الخليجي) ثم
يجب أن تكون مسبوقة بجميع خيارات سطر أوامر الرابط -Wl ، (أو ما هو مناسب
لبرنامج التحويل البرمجي المعين) مثل هذا:
gcc -Wl، - start-group foo.o bar.o -Wl، - end-group
هذا مهم ، لأنه بخلاف ذلك ، قد يقوم برنامج تشغيل المترجم بإسقاط ملف
خيارات رابط ، مما أدى إلى ارتباط سيء. قد ينشأ الارتباك أيضًا عند تمرير الخيارات
التي تتطلب قيمًا من خلال برنامج تشغيل ، مثل استخدام مسافة بين الخيار والوسيطة
يعمل كفاصل ، ويتسبب في قيام السائق بتمرير الخيار فقط إلى الرابط و
حجة للمترجم. في هذه الحالة ، من الأسهل استخدام الأشكال المرتبطة لكليهما
خيارات أحادية ومتعددة الأحرف ، مثل:
gcc foo.o bar.o -Wl، -eENTRY -Wl، -Map = خريطة
فيما يلي جدول بمفاتيح تبديل سطر الأوامر العامة المقبولة بواسطة رابط GNU:
@ملف
قراءة خيارات سطر الأوامر من ملف. يتم إدراج الخيارات المقروءة بدلاً من ملف
أصلي @ملف اختيار. إذا ملف غير موجود ، أو لا يمكن قراءته ، ثم الخيار
سيتم التعامل معها حرفيا ، ولن تتم إزالتها.
خيارات في ملف مفصولة بمسافة بيضاء. قد يتم تضمين حرف مسافة بيضاء
في خيار من خلال إحاطة الخيار بالكامل بعلامات اقتباس مفردة أو مزدوجة. أي
قد يتم تضمين الحرف (بما في ذلك الشرطة المائلة للخلف) عن طريق بادئة الحرف المراد أن يكون
مشمول بشرطة مائلة للخلف. ال ملف قد تحتوي نفسها على @ إضافيةملف والخيارات؛ أي
ستتم معالجة هذه الخيارات بشكل متكرر.
-a الكلمة
هذا الخيار مدعوم للتوافق مع HP / UX. ال الكلمة يجب أن تكون الحجة واحدة من
الخيوط أرشيف, شاركت الطرق أو الافتراضي. - ارشيفي يعادل وظيفيًا
- ثابت، والكلمتان الرئيسيتان الأخريان مكافئة وظيفيًا لـ -ديناميكية. هذا
يمكن استخدام الخيار أي عدد من المرات.
--تدقيق مراجعة الحسابات
يضيف مراجعة الحسابات إلى إدخال "DT_AUDIT" للقسم الديناميكي. مراجعة الحسابات لم يتم فحصها
من أجل الوجود ، ولن يستخدم DT_SONAME المحدد في المكتبة. إذا تم تحديد ذلك
عدة مرات "DT_AUDIT" سوف تحتوي على قائمة مفصولة بنقطتين لواجهات التدقيق
استعمال. إذا عثر الرابط على كائن به إدخال تدقيق أثناء البحث عن مشترك
المكتبات ، سيتم إضافة إدخال "DT_DEPAUDIT" المقابل في ملف الإخراج. هذه
الخيار مفيد فقط على منصات ELF التي تدعم واجهة rtld-Audit.
-A هندسة معمارية
- العمارة =هندسة معمارية
في الإصدار الحالي من ld، هذا الخيار مفيد فقط لعائلة Intel 960 من
معماريات. في هذا ld التكوين ، و هندسة معمارية حجة تحدد ال
خاصة في عائلة 960 ، مما يتيح بعض الضمانات وتعديل
مسار بحث مكتبة الأرشيف.
الإصدارات المستقبلية من ld قد تدعم وظائف مماثلة لهندسة معمارية أخرى
الأسر.
-b نمط الإدخال
- تنسيق =نمط الإدخال
ld قد يتم تكوينه لدعم أكثر من نوع واحد من ملفات الكائن. إذا كان لديك ld is
تم تكوينه بهذه الطريقة ، يمكنك استخدام ملف -b خيار لتحديد التنسيق الثنائي للإدخال
ملفات الكائنات التي تتبع هذا الخيار في سطر الأوامر. حتى عندما ld تم تكوينه
لدعم تنسيقات كائن بديلة ، لا تحتاج عادةً إلى تحديد ذلك ، مثل ld
يجب تكوينه بحيث يتوقع التنسيق الأكثر شيوعًا في كل تنسيق كتنسيق إدخال افتراضي
آلة. نمط الإدخال هي سلسلة نصية ، اسم تنسيق معين يدعمه
مكتبات BFD. (يمكنك سرد التنسيقات الثنائية المتاحة بامتداد com.objdump -i.)
قد ترغب في استخدام هذا الخيار إذا كنت تقوم بربط الملفات بثنائي غير عادي
صيغة. تستطيع ايضا استخذام -b للتبديل بين الصيغ بشكل صريح (عند ربط ملفات الكائنات
بتنسيقات مختلفة) ، من خلال تضمين -b نمط الإدخال قبل كل مجموعة من ملفات الكائن
بتنسيق معين.
الصيغة الافتراضية مأخوذة من متغير البيئة "GNUTARGET".
يمكنك أيضًا تحديد تنسيق الإدخال من برنامج نصي ، باستخدام الأمر "TARGET" ؛
-c ملف أوامر التصوير بالرنين المغناطيسي
- النصي-mri =ملف أوامر التصوير بالرنين المغناطيسي
للتوافق مع الوصلات التي ينتجها التصوير بالرنين المغناطيسي ، ld يقبل ملفات البرامج النصية المكتوبة بامتداد
لغة أوامر بديلة مقيدة ، موضحة في ملفات البرامج النصية المتوافقة مع التصوير بالرنين المغناطيسي
قسم من وثائق GNU ld. تقديم ملفات البرنامج النصي للتصوير بالرنين المغناطيسي مع الخيار -c؛ استعمال
ال -T خيار لتشغيل البرامج النصية للرابط المكتوبة في الأغراض العامة ld البرمجة
لغة. لو ملف التصوير بالرنين المغناطيسي غير موجود، ld يبحث عنها في الدلائل المحددة
بأي -L خيارات.
-d
-تيار مستمر
-dp هذه الخيارات الثلاثة متكافئة. أشكال متعددة مدعومة من أجل التوافق
مع روابط أخرى. يقومون بتعيين مساحة للرموز الشائعة حتى لو كان الإخراج قابل للنقل
تم تحديد الملف (بامتداد -r). أمر البرنامج النصي "FORCE_COMMON_ALLOCATION" له الامتداد
نفس التأثير.
--مدقق مراجعة الحسابات
-P مراجعة الحسابات
يضيف مراجعة الحسابات إلى إدخال "DT_DEPAUDIT" للقسم الديناميكي. مراجعة الحسابات ليس
تم التحقق من وجوده ، ولن يستخدم DT_SONAME المحدد في المكتبة. لو
المحدد عدة مرات "DT_DEPAUDIT" سوف يحتوي على قائمة تدقيق مفصولة بنقطتين
واجهات للاستخدام. هذا الخيار مفيد فقط على منصات ELF التي تدعم
واجهة تدقيق rtld. يتوفر الخيار -P لتوافق Solaris.
-e دخول
- دخول =دخول
استعمل دخول كرمز صريح لبدء تنفيذ برنامجك ، بدلاً من
نقطة الدخول الافتراضية. إذا لم يكن هناك رمز مسمى دخول، سيحاول الرابط
تحليل دخول كرقم ، واستخدمه كعنوان الإدخال (سيكون الرقم
مفسرة في الأساس 10 ؛ يمكنك استخدام الرائدة 0x للقاعدة 16 ، أو بادئة 0 للقاعدة
8).
--استثني الليبس ليب,ليب، ...
يحدد قائمة مكتبات الأرشيف التي لا يجب أن تكون الرموز منها تلقائيًا
تصدير. يمكن تحديد أسماء المكتبات بفاصلات أو نقطتين. التحديد
يستبعد "--exclude-libs ALL" الرموز الموجودة في جميع مكتبات الأرشيف من التصدير التلقائي.
هذا الخيار متاح فقط للمنفذ المستهدف i386 PE للرابط و ELF
الموانئ المستهدفة. بالنسبة لـ i386 PE ، لا تزال الرموز المدرجة صراحةً في ملف .def
المصدرة ، بغض النظر عن هذا الخيار. بالنسبة لمنافذ ELF المستهدفة ، تتأثر الرموز بهذا
سيتم التعامل مع الخيار على أنه مخفي.
--استثني الوحدات النمطية لـ implib وحدة,وحدة، ...
يحدد قائمة بملفات الكائنات أو أعضاء الأرشيف ، والتي لا ينبغي أن تكون الرموز منها
يتم تصديرها تلقائيًا ، ولكن يجب نسخها بالجملة إلى مكتبة الاستيراد
يتم إنشاؤها أثناء الارتباط. يمكن تحديد أسماء الوحدات بفواصل أو
النقطتين ، ويجب أن تتطابق تمامًا مع أسماء الملفات المستخدمة بواسطة ld لفتح الملفات للأرشيف
الأعضاء ، هذا ببساطة هو اسم العضو ، ولكن بالنسبة لملفات الكائن ، يجب أن يكون الاسم المدرج
تضمين ومطابقة بدقة أي مسار يستخدم لتحديد ملف الإدخال على الرابط
سطر الأوامر. هذا الخيار متاح فقط للمنفذ المستهدف i386 PE من
رابط. لا يزال يتم تصدير الرموز المدرجة بشكل صريح في ملف .def ، بغض النظر عن
هذا الخيار.
-E
- ديناميكية التصدير
- لا للتصدير الديناميكي
عند إنشاء ملف قابل للتنفيذ مرتبط ديناميكيًا ، باستخدام امتداد -E الخيار أو
- ديناميكية التصدير يتسبب الخيار في قيام الرابط بإضافة جميع الرموز إلى الرمز الديناميكي
طاولة. جدول الرموز الديناميكي هو مجموعة الرموز المرئية من الديناميكي
كائنات في وقت التشغيل.
إذا كنت لا تستخدم أيًا من هذه الخيارات (أو تستخدم امتداد - لا للتصدير الديناميكي الخيار ل
استعادة السلوك الافتراضي) ، سيحتوي جدول الرموز الديناميكي عادةً فقط
تلك الرموز التي يتم الإشارة إليها بواسطة كائن ديناميكي مذكور في الرابط.
إذا كنت تستخدم "dlopen" لتحميل كائن ديناميكي يحتاج إلى الرجوع إلى الرموز
التي يحددها البرنامج ، بدلاً من كائن ديناميكي آخر ، فمن المحتمل أن تفعل ذلك
تحتاج إلى استخدام هذا الخيار عند ربط البرنامج نفسه.
يمكنك أيضًا استخدام القائمة الديناميكية للتحكم في الرموز التي يجب إضافتها إلى ملف
جدول الرموز الديناميكية إذا كان تنسيق الإخراج يدعمه. انظر وصف
- قائمة ديناميكية.
لاحظ أن هذا الخيار خاص بمنافذ ELF المستهدفة. أهداف PE تدعم مماثلة
وظيفة لتصدير جميع الرموز من DLL أو EXE ؛ انظر وصف
- تصدير جميع الرموز أدناه.
-EB ربط الأشياء الكبيرة. هذا يؤثر على تنسيق الإخراج الافتراضي.
-ال ربط الأشياء الصغيرة. هذا يؤثر على تنسيق الإخراج الافتراضي.
-f الاسم
- مساعد =الاسم
عند إنشاء كائن مشترك ELF ، قم بتعيين الحقل DT_AUXILIARY الداخلي إلى
الاسم المحدد. هذا يخبر الرابط الديناميكي أن جدول الرموز الخاص بالمشاركة
يجب استخدام الكائن كعامل تصفية إضافي في جدول الرموز الخاص بالكائن المشترك
الاسم.
إذا قمت لاحقًا بربط برنامج مقابل كائن المرشح هذا ، فعند تشغيل ملف
البرنامج ، سيرى الرابط الديناميكي الحقل DT_AUXILIARY. إذا كان الرابط الديناميكي
يحل أي رموز من كائن المرشح ، وسيقوم أولاً بفحص ما إذا كان هناك ملف
التعريف في الكائن المشترك الاسم. إذا كان هناك واحد ، فسيتم استخدامه بدلاً من ملف
التعريف في كائن التصفية. الكائن المشترك الاسم لا داعي للوجود. وهكذا
كائن مشترك الاسم يمكن استخدامها لتوفير تطبيق بديل لبعض
وظائف ، ربما لتصحيح الأخطاء أو لأداء محدد للآلة.
يمكن تحديد هذا الخيار أكثر من مرة. سيتم إنشاء الإدخالات DT_AUXILIARY
بالترتيب الذي تظهر به في سطر الأوامر.
-F الاسم
- عامل التصفية =الاسم
عند إنشاء كائن مشترك ELF ، قم بتعيين الحقل DT_FILTER الداخلي إلى المحدد
اسم. هذا يخبر الرابط الديناميكي أن جدول الرموز للكائن المشترك
يتم إنشاؤه يجب استخدامه كعامل تصفية في جدول الرموز للكائن المشترك
الاسم.
إذا قمت لاحقًا بربط برنامج مقابل كائن المرشح هذا ، فعند تشغيل ملف
البرنامج ، سيرى الرابط الديناميكي حقل DT_FILTER. سوف الرابط الديناميكي
حل الرموز وفقًا لجدول الرموز الخاص بكائن المرشح كالمعتاد ، ولكن ذلك
سيرتبط بالفعل بالتعريفات الموجودة في الكائن المشترك الاسم. وبالتالي فإن
يمكن استخدام كائن عامل التصفية لتحديد مجموعة فرعية من الرموز التي يوفرها الكائن
الاسم.
استخدمت بعض الروابط القديمة ملف -F الخيار في جميع أنحاء مجموعة أدوات التجميع لـ
تحديد تنسيق ملف الكائن لكل من ملفات كائن الإدخال والإخراج. رابط جنو
يستخدم آليات أخرى لهذا الغرض: -b, --صيغة, - تنسيق الخيارات
الأمر "TARGET" في البرامج النصية للرابط ، ومتغير البيئة "GNUTARGET". غنو
سوف يتجاهل رابط -F الخيار عند عدم إنشاء كائن مشترك ELF.
- فيني =الاسم
عند إنشاء ELF قابل للتنفيذ أو كائن مشترك ، قم باستدعاء NAME عندما يكون الملف القابل للتنفيذ أو
تم إلغاء تحميل الكائن المشترك عن طريق تعيين DT_FINI إلى عنوان الوظيفة. بواسطة
افتراضيًا ، يستخدم الرابط "_fini" كوظيفة للاتصال.
-g تم التجاهل. تم توفيره للتوافق مع الأدوات الأخرى.
-G قيمنا
- gpsize =قيمنا
قم بتعيين الحد الأقصى لحجم الكائنات المراد تحسينها باستخدام سجل GP إلى المقاس. هذا
مفيد فقط لتنسيقات ملفات الكائنات مثل MIPS ELF التي تدعم وضع ملفات كبيرة
والأشياء الصغيرة في أقسام مختلفة. يتم تجاهل هذا لملف كائن آخر
الأشكال.
-h الاسم
-Soname =الاسم
عند إنشاء كائن مشترك ELF ، قم بتعيين حقل DT_SONAME الداخلي إلى المحدد
اسم. عندما يكون الملف القابل للتنفيذ مرتبطًا بكائن مشترك به حقل DT_SONAME ،
ثم عند تشغيل الملف القابل للتنفيذ ، سيحاول الرابط الديناميكي تحميل الملف المشترك
كائن محدد بواسطة الحقل DT_SONAME بدلاً من استخدام اسم الملف المعطى لـ
الرابط.
-i قم بإجراء ارتباط تزايدي (مثل الخيار -r).
-init =الاسم
عند إنشاء ELF قابل للتنفيذ أو كائن مشترك ، قم باستدعاء NAME عندما يكون الملف القابل للتنفيذ أو
يتم تحميل الكائن المشترك عن طريق ضبط DT_INIT على عنوان الوظيفة. بواسطة
افتراضيًا ، يستخدم الرابط "_init" كوظيفة للاتصال.
-l الأسماء
- المكتبة =الأسماء
أضف ملف الأرشيف أو الكائن المحدد بواسطة الأسماء إلى قائمة الملفات المراد ربطها.
يمكن استخدام هذا الخيار في أي عدد من المرات. لو الأسماء هو من النموذج :اسم الملف, ld
سيبحث في مسار المكتبة عن ملف يسمى اسم الملف، وإلا فإنه سيبحث في
مسار مكتبة لملف يسمى libnamespec.a.
على الأنظمة التي تدعم المكتبات المشتركة ، ld قد يبحث أيضًا عن ملفات أخرى غير
libnamespec.a. على وجه التحديد ، في أنظمة ELF و SunOS ، ld سيبحث في دليل عن
مكتبة تسمى libnamespec.so قبل البحث عن واحد يسمى libnamespec.a. (بواسطة
اصطلاحًا ، يشير ملحق ".so" إلى مكتبة مشتركة.) لاحظ أن هذا السلوك
لا ينطبق :اسم الملف، والتي تحدد دائمًا ملفًا يسمى اسم الملف.
سيبحث الرابط في أرشيف مرة واحدة فقط ، في المكان المحدد فيه
سطر الأوامر. إذا كان الأرشيف يحدد رمزًا لم يتم تحديده في كائن ما
الذي ظهر قبل الأرشيف في سطر الأوامر ، سيتضمن الرابط امتداد
الملف (الملفات) المناسبة من الأرشيف. ومع ذلك ، رمز غير محدد في كائن
الظهور لاحقًا في سطر الأوامر لن يتسبب في قيام الرابط بالبحث في الأرشيف
مرة أخرى.
شاهد -( خيار لطريقة إجبار الرابط على البحث في الأرشيفات عدة مرات.
يمكنك سرد نفس الأرشيف عدة مرات في سطر الأوامر.
يعتبر هذا النوع من البحث في الأرشيف معيارًا لروابط Unix. ومع ذلك ، إذا كنت
استخدام ld في AIX ، لاحظ أنه يختلف عن سلوك رابط AIX.
-L البحث
- مسار المكتبة =البحث
أضف المسار البحث إلى قائمة المسارات التي ld سيبحث عن مكتبات الأرشيف و
ld نصوص التحكم. يمكنك استخدام هذا الخيار أي عدد من المرات. الدلائل
تم البحث بالترتيب الذي تم تحديده به في سطر الأوامر. الدلائل
المحدد في سطر الأوامر يتم البحث عنها قبل الدلائل الافتراضية. الجميع -L
تنطبق الخيارات على الجميع -l بغض النظر عن الترتيب الذي تظهر به الخيارات.
-L الخيارات لا تؤثر على كيفية ld يبحث عن نص رابط ما لم يكن -T الخيار
محدد.
If البحث يبدأ بـ "=" ، ثم سيتم استبدال "=" ب sysroot بادئة,
يسيطر عليها - الجذور الخيار ، أو يتم تحديده عند تكوين الرابط.
مجموعة المسارات الافتراضية التي تم البحث عنها (بدون تحديدها بامتداد -L) يعتمد على أي
وضع المحاكاة ld يستخدم ، وفي بعض الحالات أيضًا حول كيفية تكوينه.
يمكن أيضًا تحديد المسارات في نص ارتباط باستخدام الأمر "SEARCH_DIR".
يتم البحث في الدلائل المحددة بهذه الطريقة عند النقطة التي يتم فيها البحث في البرنامج النصي للرابط
يظهر في سطر الأوامر.
-m محاكاة
محاكاة محاكاة رابط. يمكنك سرد المحاكاة المتاحة بامتداد
- الإسراف or -V خيارات.
إذا كان -m الخيار غير مستخدم ، المحاكاة مأخوذة من "LDEMULATION"
متغير البيئة ، إذا تم تحديد ذلك.
وبخلاف ذلك ، تعتمد المحاكاة الافتراضية على كيفية تكوين الرابط.
-M
- طباعة الخريطة
اطبع خريطة ارتباط إلى الإخراج القياسي. توفر خريطة الارتباط معلومات حول
بما في ذلك ما يلي:
أين يتم تعيين ملفات الكائن في الذاكرة.
· كيف يتم تخصيص الرموز المشتركة.
· جميع أعضاء الأرشيف المشمولين بالرابط مع ذكر الرمز الذي
تسببت في إحضار عضو الأرشيف.
· القيم المخصصة للرموز.
ملاحظة - الرموز التي يتم حساب قيمها بواسطة تعبير يتضمن a
قد لا يكون للإشارة إلى قيمة سابقة لنفس الرمز نتيجة صحيحة
المعروضة في خريطة الارتباط. هذا لأن الرابط يتجاهل الوسيطة
النتائج ويحتفظ فقط بالقيمة النهائية للتعبير. في ظل مثل
الظروف سيعرض الرابط القيمة النهائية محاطة بأقواس مربعة.
وهكذا ، على سبيل المثال ، نص رابط يحتوي على:
فو = 1
فو = فو * 4
فو = فو + 8
سينتج الإخراج التالي في خريطة الارتباط إذا كان -M يستخدم الخيار:
0x00000001 فو = 0x1
[0x0000000c] فو = (فو * 0x4)
[0x0000000c] فو = (فو + 0x8)
يرى التعبيرات لمزيد من المعلومات حول التعبيرات في البرامج النصية للرابط.
-n
--nmagic
قم بإيقاف تشغيل محاذاة الصفحات للأقسام ، وقم بتعطيل الارتباط بالمكتبات المشتركة. لو
يدعم تنسيق الإخراج الأرقام السحرية لنمط Unix ، ضع علامة على الإخراج كـ "NMAGIC".
-N
--أوماجيك
قم بتعيين أقسام النص والبيانات لتكون قابلة للقراءة والكتابة. أيضًا ، لا تقم بمحاذاة الصفحات
مقطع البيانات ، وتعطيل الربط بالمكتبات المشتركة. إذا كان تنسيق الإخراج
يدعم الأرقام السحرية لنمط Unix ، ضع علامة على الإخراج كـ "OMAGIC". ملاحظة: على الرغم من أن أ
يُسمح بقسم النص القابل للكتابة لأهداف PE-COFF ، فهو لا يتوافق مع
مواصفات التنسيق التي نشرتها Microsoft.
- لا omagic
ينفي هذا الخيار معظم تأثيرات -N اختيار. يقوم بتعيين قسم النص إلى
أن تكون للقراءة فقط ، وتفرض أن تكون شريحة البيانات محاذاة للصفحة. ملاحظة - هذا الخيار يفعل
عدم تمكين الارتباط بالمكتبات المشتركة. يستخدم -ديناميكية لهذا.
-o الناتج
- الخرج =الناتج
استعمل الناتج كاسم البرنامج الذي أنتجه ld؛ إذا لم يكن هذا الخيار
المحدد ، الاسم أ يتم استخدامه بشكل افتراضي. يمكن أيضًا لأمر البرنامج النصي "الإخراج"
حدد اسم ملف الإخراج.
-O مستوى
If مستوى هي قيم عددية أكبر من الصفر ld يحسن الإخراج. هذا يمكن
يستغرق وقتًا أطول بكثير وبالتالي ربما يجب تمكينه فقط للنهائي
الثنائية. في الوقت الحالي ، لا يؤثر هذا الخيار إلا في إنشاء مكتبة ELF المشتركة. مستقبل
قد تزيد إصدارات الرابط من استخدام هذا الخيار. أيضا حاليا لا يوجد
الاختلاف في سلوك الرابط لقيم مختلفة غير صفرية لهذا الخيار.
مرة أخرى قد يتغير هذا مع الإصدارات المستقبلية.
- دولة الاندفاع
لقد عادوا - دولة الاندفاع يسمح بالحفاظ على الحالة الحالية للأعلام التي تحكم
معالجة ملف الإدخال بحيث يمكن استعادتها جميعًا بواحد مناظر
- بوب الدولة الخيار.
الخيار الذي يتم تغطيته هو: -ديناميكية, - ثابت, -dn, -دي, -call_shared,
-غير مشترك, -ثابتة, -N, -n, - أرشيف كامل, --لا أرشيف كامل, -r, -أور,
- نسخة- dt- إدخالات مطلوبة, - لا حاجة لنسخ dt إدخالات, --كما هو مطلوب, - لا حسب الحاجة,
و -a.
هدف واحد لهذا الخيار هو مواصفات pkg-config. عند استخدامها مع ملف
- الشلب خيار جميع المكتبات التي من المحتمل أن تكون مطلوبة مدرجة ومن ثم يمكن ربطها بـ
طوال الوقت. الأفضل إرجاع شيء على النحو التالي:
-Wl ، - حالة الدفع ، - حسب الحاجة - ليبون - libtwo -Wl، - pop-state
يلغي تأثير --push-state ، ويستعيد القيم السابقة للأعلام التي تحكم
معالجة ملف الإدخال.
-q
--emit-relocs
اترك أقسام ومحتويات النقل في ملفات تنفيذية مرتبطة بالكامل. رابط المشاركة
قد تحتاج أدوات التحليل والتحسين إلى هذه المعلومات من أجل الأداء الصحيح
تعديلات الملفات التنفيذية. ينتج عن هذا ملفات تنفيذية أكبر.
هذا الخيار مدعوم حاليًا على منصات ELF فقط.
- ديناميكية القوة
إجبار ملف الإخراج على الحصول على أقسام ديناميكية. هذا الخيار خاص بـ VxWorks
أهداف.
-r
- ريلوكاتابل
توليد إخراج يمكن إعادة تحديد موضعه --- ، على سبيل المثال ، إنشاء ملف إخراج يمكن أن يعمل بدوره كملف
المدخلات ل ld. غالبا ما يسمى هذا جزئي ربط. كأثر جانبي ، في البيئات
التي تدعم أرقام Unix السحرية القياسية ، يعيّن هذا الخيار أيضًا ملفات الإخراج
الرقم السحري إلى "OMAGIC". إذا لم يتم تحديد هذا الخيار ، فإن الملف المطلق هو
أنتجت. عند ربط برامج C ++ ، يكون هذا الخيار سوف ليس حل المراجع إلى
الصانعين. للقيام بذلك ، استخدم -أور.
عندما لا يكون لملف الإدخال نفس تنسيق ملف الإخراج ، الارتباط الجزئي
يتم دعمه فقط إذا كان ملف الإدخال هذا لا يحتوي على أي عمليات نقل. مختلف
يمكن أن يكون لتنسيقات الإخراج مزيد من القيود ؛ على سبيل المثال بعض التنسيقات المستندة إلى "a.out"
لا تدعم الارتباط الجزئي بملفات الإدخال بتنسيقات أخرى على الإطلاق.
هذا الخيار يفعل نفس الشيء مثل -i.
-R اسم الملف
- مجرد رموز =اسم الملف
اقرأ أسماء الرموز وعناوينها من اسم الملف، لكن لا تقم بنقلها أو تضمينها
في الإخراج. هذا يسمح لملف الإخراج الخاص بك للإشارة رمزيًا إلى مطلق
مواقع الذاكرة المحددة في البرامج الأخرى. يمكنك استخدام هذا الخيار أكثر من
ذات مرة.
للتوافق مع روابط ELF الأخرى ، إذا كان الملف -R الخيار متبوع بدليل
name ، بدلاً من اسم الملف ، يتم التعامل معه على أنه امتداد - مسار الخيار.
-s
- شريط الكل
احذف جميع معلومات الرمز من ملف الإخراج.
-S
- شريط التصحيح
احذف معلومات رمز مصحح الأخطاء (ولكن ليس كل الرموز) من ملف الإخراج.
-t
--أثر
اطبع أسماء ملفات الإدخال بصيغة ld يعالجها.
-T ملف
- نص =ملف
استعمل ملف باعتباره البرنامج النصي رابط. يستبدل هذا البرنامج النصي ldالبرنامج النصي الافتراضي للرابط
(بدلاً من الإضافة إليه) ، لذا ملف الأوامر يجب أن تحدد كل ما هو ضروري
صف ملف الإخراج. لو ملف غير موجود في الدليل الحالي ،
يبحث "ld" عنه في الدلائل المحددة في أي دليل سابق -L والخيارات. عديد
-T تتراكم الخيارات.
-dT ملف
- النص الافتراضي =ملف
استعمل ملف باعتباره النص الافتراضي للرابط.
هذا الخيار مشابه لـ --النصي الخيار باستثناء أن معالجة البرنامج النصي
تأخر حتى بعد معالجة بقية سطر الأوامر. هذا يسمح
الخيارات الموضوعة بعد - النص الافتراضي الخيار في سطر الأوامر للتأثير على ملف
سلوك البرنامج النصي رابط ، والذي يمكن أن يكون مهمًا عند سطر أوامر الرابط
لا يمكن للمستخدم التحكم فيها بشكل مباشر. (على سبيل المثال لأن سطر الأوامر يجري
تم إنشاؤها بواسطة أداة أخرى ، مثل دول مجلس التعاون الخليجي).
-u رمز
- undefined =رمز
القوة رمز ليتم إدخالها في ملف الإخراج كرمز غير محدد. القيام بذلك قد ،
على سبيل المثال ، قم بتشغيل ربط وحدات إضافية من المكتبات القياسية. -u قد يكون
مكرر مع وسيطات خيارات مختلفة لإدخال رموز إضافية غير محددة. هذه
يكافئ الخيار الأمر النصي رابط "EXTERN".
إذا تم استخدام هذا الخيار لفرض سحب وحدات إضافية في الارتباط ،
وإذا كان من الخطأ أن يظل الرمز غير معرّف ، فإن الخيار
--تطلب المعرفة يجب أن تستخدم بدلا من ذلك.
- معرّف طلب =رمز
تتطلب ذلك رمز يتم تعريفه في ملف الإخراج. هذا الخيار هو نفس الخيار
--غير معرف ما عدا ذلك إذا رمز لم يتم تعريفه في ملف الإخراج ثم الرابط
سيصدر خطأ ويخرج. يمكن تحقيق نفس التأثير في نص رابط بواسطة
باستخدام "EXTERN" و "ASSERT" و "DEFINED" معًا. يمكن استخدام هذا الخيار عدة مرات
مرات لطلب رموز إضافية.
-أور لأي شيء بخلاف برامج C ++ ، فإن هذا الخيار يعادل -r: يولد
الإخراج relocatable --- على سبيل المثال ، ملف الإخراج الذي يمكن بدوره أن يكون بمثابة مدخلات إلى ld. عندما
ربط برامج C ++ ، -أور هل حل الإشارات إلى المنشئين ، على عكس -r. نعم هو كذلك
لا يعمل للاستخدام -أور على الملفات التي تم ربطها هي نفسها بـ -أور؛ مرة واحدة في
تم إنشاء جدول المُنشئ ، ولا يمكن إضافته إليه. يستخدم -أور فقط في الماضي
ارتباط جزئي و -r للآخرين.
- التعامل مع الأورفان =MODE
التحكم في كيفية التعامل مع الأقسام اليتيمة. قسم الأيتام قسم غير محدد
المذكورة في نص رابط.
MODE يمكن أن تحتوي على أي من القيم التالية:
"مكان"
يتم وضع الأقسام اليتيمة في قسم الإخراج المناسب باتباع الإستراتيجية
موضح في يتيم لإعادة التشكيل. الخيار --فريدة من نوعها يؤثر أيضًا على كيفية عمل الأقسام
وضعت.
"تجاهل"
يتم التخلص من جميع أقسام الأيتام ، وذلك بوضعها في /تجاهل/ والقسم الخاص به.
"تحذير"
سيضع الرابط قسم الأيتام كـ "مكان" ويصدر أيضًا تحذيرًا.
"خطأ"
سيتم إنهاء الرابط مع وجود خطأ إذا تم العثور على أي قسم يتيم.
الافتراضي إذا - التعامل مع الأورفان لم يتم إعطاء "المكان".
- فريد [=الجزء]
يقوم بإنشاء قسم إخراج منفصل لكل قسم إدخال مطابق الجزء، أو إذا كان
بدل اختياري الجزء الحجة مفقودة ، لكل قسم إدخال يتيم. ان
قسم اليتيم هو قسم غير مذكور على وجه التحديد في نص رابط. يمكنك استخدام هذا
الخيار عدة مرات في سطر الأوامر ؛ يمنع الدمج الطبيعي للإدخال
المقاطع التي تحمل الاسم نفسه ، لتجاوز تعيينات قسم الإخراج في نص رابط.
-v
--الإصدار
-V اعرض رقم الإصدار لـ ld. -V يسرد الخيار أيضًا المحاكاة المدعومة.
-x
--تجاهل كل
احذف جميع الرموز المحلية.
-X
- تجاهل-السكان المحليين
احذف جميع الرموز المحلية المؤقتة. (تبدأ هذه الرموز بمحلية خاصة بالنظام
بادئات التسمية ، عادةً .L لأنظمة ELF أو L لأنظمة a.out التقليدية.)
-y رمز
- رمز التتبع =رمز
اطبع اسم كل ملف مرتبط فيه رمز يبدو. يمكن إعطاء هذا الخيار
أي عدد من المرات. في العديد من الأنظمة ، من الضروري إضافة شرطة سفلية مسبقًا.
يكون هذا الخيار مفيدًا عندما يكون لديك رمز غير محدد في الارتباط الخاص بك ولكنك لا تعرف
من أين يأتي المرجع.
-Y مسار
أضف مسار إلى مسار البحث الافتراضي للمكتبة. هذا الخيار موجود لسولاريس
التوافق.
-z الكلمة
الكلمات الرئيسية المعترف بها هي:
كومبريلوك
يجمع بين أقسام إعادة تحديد متعددة وفرزها لإجراء بحث ديناميكي عن الرمز
التخزين المؤقت ممكن.
defs
لا يسمح باستخدام رموز غير محددة في ملفات الكائنات. رموز غير محددة في Shared
لا يزال مسموحًا بالمكتبات.
إكسيكستاك
يضع علامة على الكائن كمتطلب مكدس قابل للتنفيذ.
شامل
هذا الخيار له معنى فقط عند بناء كائن مشترك. يجعل
الرموز المحددة بواسطة هذا الكائن المشترك متاحة لتحليل الرموز لـ
المكتبات التي تم تحميلها لاحقًا.
com.initfirst
هذا الخيار له معنى فقط عند بناء كائن مشترك. يميز الكائن
حتى تتم تهيئة وقت التشغيل قبل تهيئة وقت التشغيل لـ
أي كائنات أخرى يتم إدخالها في العملية في نفس الوقت. وبالمثل
سيحدث إنهاء وقت تشغيل الكائن بعد الانتهاء من وقت تشغيل
أي أشياء أخرى.
تدخل
وضع علامة على الكائن الذي يتداخل جدول الرموز الخاص به قبل كل الرموز باستثناء
الأساسي القابل للتنفيذ.
كسول
عند إنشاء مكتبة قابلة للتنفيذ أو مشتركة ، ضع علامة عليها لتخبر الديناميكية
linker لتأجيل دقة استدعاء الوظيفة إلى النقطة التي يتم فيها استدعاء الوظيفة
(الربط البطيء) ، وليس وقت التحميل. الربط الكسول هو الافتراضي.
تحميل
وضع علامة على الكائن بحيث تتم معالجة عوامل التصفية الخاصة به على الفور في وقت التشغيل.
مولديف
يسمح بتعريفات متعددة.
com.nocombreloc
تعطيل دمج أقسام إعادة تحديد متعددة.
نوكوبيريلوك
قم بتعطيل رابط إنشاء متغيرات .dynbss المستخدمة بدلاً من المتغيرات المحددة في
مكتبات مشتركة. قد ينتج عنه عمليات نقل نص ديناميكي.
com.nodefaultlib
وضع علامة على الكائن الذي سيتجاهل البحث عن تبعيات هذا الكائن أي منه
مسارات البحث الافتراضية للمكتبة.
nodelete
وضع علامة على أنه لا يجب إلغاء تحميل الكائن في وقت التشغيل.
نودلوبين
وضع علامة على الكائن غير متاح لـ "dlopen".
nodump
علامات لا يمكن تفريغ الكائن بواسطة "تفريغ".
com.noexecstack
وضع علامة على الكائن على أنه لا يتطلب مكدسًا قابلاً للتنفيذ.
نص
معاملة DT_TEXTREL في الكائن المشترك كخطأ.
notext
لا تعامل DT_TEXTREL في الكائن المشترك كخطأ.
النص
لا تعامل DT_TEXTREL في الكائن المشترك كخطأ.
نوريلرو
لا تقم بإنشاء رأس مقطع ELF "PT_GNU_RELRO" في الكائن.
الآن عند إنشاء مكتبة قابلة للتنفيذ أو مشتركة ، ضع علامة عليها لتخبر الديناميكية
linker لحل جميع الرموز عند بدء تشغيل البرنامج أو عند مشاركته
المكتبة مرتبطة باستخدام dlopen ، بدلاً من إرجاء دقة استدعاء الوظيفة
إلى النقطة التي يتم فيها استدعاء الوظيفة لأول مرة.
الأصل
علامات الكائن قد تحتوي على $ ORIGIN.
relro
تكوين رأس مقطع ELF "PT_GNU_RELRO" في الكائن.
الحد الأقصى لحجم الصفحة =قيمنا
تعيين الحد الأقصى لحجم الصفحة مضاهاة إلى قيمنا.
حجم الصفحة المشتركة =قيمنا
اضبط حجم الصفحة الشائع للمحاكاة على قيمنا.
حجم المكدس =قيمنا
حدد حجم مكدس في مقطع ELF "PT_GNU_STACK". تحديد الصفر الإرادة
تجاوز أي إنشاء افتراضي لشريحة "PT_GNU_STACK" بحجم غير صفري.
bndplt
أنشئ دائمًا بادئة BND في إدخالات PLT. مدعوم لنظام Linux / x86_64.
البيانات المحمية noextern
لا تعامل رمز البيانات المحمية على أنه خارجي عند إنشاء مكتبة مشتركة. هذه
الخيار يتجاوز الافتراضي للواجهة الخلفية رابط. يمكن استخدامه لحل غير صحيح
عمليات النقل مقابل رموز البيانات المحمية التي تم إنشاؤها بواسطة المترجم. التحديثات على
رموز البيانات المحمية بواسطة وحدة نمطية أخرى غير مرئية للمشترك الناتج
مكتبة. مدعوم لـ i386 و x86-64.
call-nop = بادئة addr
call-nop = بادئة nop
call-nop = اللاحقة-nop
call-nop = بادئة-بايت
نداء نوب = لاحقة-بايت
حدد المساحة المتروكة 1 بايت "NOP" عند تحويل استدعاء غير مباشر إلى محلي
وظيفة محددة ، foo ، عبر فتحة GOT الخاصة بها. call-nop = بادئة addr يولد "0x67
call foo ". call-nop = بادئة nop يولد "0x90 call foo". call-nop = اللاحقة-nop
يولد "استدعاء foo 0x90". call-nop = بادئة-بايت يولد "بايت دعوة فو ".
نداء نوب = لاحقة-بايت يولد "call foo بايت ". مدعوم لـ i386 و x86_64.
يتم تجاهل الكلمات الأساسية الأخرى للتوافق مع Solaris.
-( أرشيف -)
- مجموعة البداية أرشيف --نهاية المجموعة
لقد عادوا أرشيف يجب أن تكون قائمة بملفات الأرشيف. قد تكون إما ملفًا صريحًا
الأسماء ، أو -l خيارات.
يتم البحث في الأرشيفات المحددة بشكل متكرر حتى لا توجد مراجع جديدة غير محددة
خلقت. عادة ، يتم البحث في الأرشيف مرة واحدة فقط بالترتيب الذي تم تحديده به
في سطر الأوامر. إذا كان هناك حاجة إلى رمز في هذا الأرشيف لحل ملف
رمز يُشار إليه بواسطة كائن في أرشيف يظهر لاحقًا في سطر الأوامر ،
لن يتمكن الرابط من حل هذا المرجع. من خلال تجميع المحفوظات ،
يتم البحث عنها جميعًا بشكل متكرر حتى يتم حل جميع المراجع المحتملة.
استخدام هذا الخيار له تكلفة أداء كبيرة. من الأفضل استخدامه فقط عندما
هناك مراجع دائرية لا مفر منها بين اثنين أو أكثر من الأرشيفات.
- قبول - غير معروف - المدخلات - القوس
--لا تقبل - غير معروف - المدخلات - القوس
يخبر الرابط بقبول ملفات الإدخال التي لا يمكن التعرف على بنيتها. ال
الافتراض هو أن المستخدم يعرف ما يفعله ويريد الارتباط عمدًا
في ملفات الإدخال غير المعروفة هذه. كان هذا هو السلوك الافتراضي للرابط ، من قبل
الإصدار 2.14. السلوك الافتراضي من الإصدار 2.14 وما بعده هو رفض مثل هذا الإدخال
الملفات ، وهكذا فإن ملفات - قبول - غير معروف - المدخلات - القوس تمت إضافة الخيار لاستعادة القديم
سلوك.
--كما هو مطلوب
- لا حسب الحاجة
يؤثر هذا الخيار على علامات ELF DT_NEEDED للمكتبات الديناميكية المذكورة في الأمر
السطر بعد --كما هو مطلوب اختيار. عادةً ما يضيف الرابط علامة DT_NEEDED لـ
كل مكتبة ديناميكية مذكورة في سطر الأوامر ، بغض النظر عما إذا كانت المكتبة
في الواقع مطلوب أم لا. --كما هو مطلوب يتسبب في إصدار علامة DT_NEEDED فقط لـ
مكتبة at أن نقطة in ال الصفحة يلبي رمز غير ضعيف غير محدد
مرجع من ملف كائن عادي أو إذا لم يتم العثور على المكتبة في DT_NEEDED
قوائم المكتبات الأخرى المطلوبة ، مرجع رمز غير ضعيف غير محدد من آخر
بحاجة إلى مكتبة ديناميكية. تظهر ملفات الكائن أو المكتبات في سطر الأوامر بعد
لا تؤثر المكتبة المعنية على ما إذا كان يُنظر إلى المكتبة حسب الحاجة. هذا هو
على غرار قواعد استخراج ملفات الكائن من الأرشيف. - لا حسب الحاجة
يعيد السلوك الافتراضي.
--إضافة
--لا حاجة لإضافة
تم إهمال هذين الخيارين بسبب تشابه أسمائهما بـ
--كما هو مطلوب و - لا حسب الحاجة والخيارات. تم استبدالهم بـ
- نسخة- dt- إدخالات مطلوبة و - لا حاجة لنسخ dt إدخالات.
-يجزم الكلمة
تم تجاهل هذا الخيار للتوافق مع SunOS.
-ديناميكية
-دي
-call_shared
الارتباط بالمكتبات الديناميكية. هذا مفيد فقط في الأنظمة الأساسية التي تمت مشاركتها
المكتبات مدعومة. عادةً ما يكون هذا الخيار هو الخيار الافتراضي في مثل هذه الأنظمة الأساسية. ال
المتغيرات المختلفة لهذا الخيار للتوافق مع أنظمة مختلفة. يمكنك
استخدم هذا الخيار عدة مرات في سطر الأوامر: فهو يؤثر على بحث المكتبة عن
-l الخيارات التي تتبعها.
-بالمجموعة
قم بتعيين علامة "DF_1_GROUP" في الإدخال "DT_FLAGS_1" في القسم الديناميكي. هذه
يتسبب رابط وقت التشغيل في معالجة عمليات البحث في هذا الكائن وتبعياته
فقط داخل المجموعة. - رموز غير محلولة = تقرير - الكل هو ضمني. هذه
الخيار مفيد فقط على منصات ELF التي تدعم المكتبات المشتركة.
- ثابت
-dn
-غير مشترك
-ثابتة
لا ترتبط بالمكتبات المشتركة. هذا له معنى فقط على المنصات التي
يتم دعم المكتبات المشتركة. المتغيرات المختلفة لهذا الخيار هي لـ
التوافق مع الأنظمة المختلفة. يمكنك استخدام هذا الخيار عدة مرات في
سطر الأوامر: يؤثر على بحث المكتبة عن -l الخيارات التي تتبعها. هذه
الخيار يعني أيضا - رموز غير محلولة = تقرير - الكل. يمكن استخدام هذا الخيار مع
-مشاركة. يعني القيام بذلك أنه يتم إنشاء مكتبة مشتركة ولكن كل ملفات
يجب حل المراجع الخارجية للمكتبة عن طريق سحب الإدخالات من ثابت
المكتبات.
-ب رمزي
عند إنشاء مكتبة مشتركة ، اربط المراجع إلى الرموز العامة بالتعريف
داخل المكتبة المشتركة ، إن وجدت. عادة ، من الممكن ربط البرنامج
مقابل مكتبة مشتركة لتجاوز التعريف داخل المكتبة المشتركة. هذه
يمكن أيضًا استخدام الخيار مع - ديناميكية التصدير الخيار ، عند إنشاء المركز
مستقل قابل للتنفيذ ، لربط الإشارات إلى الرموز العالمية بالتعريف داخل
الملف القابل للتنفيذ. هذا الخيار مفيد فقط على منصات ELF التي تدعم المشاركة
المكتبات ووضع الملفات التنفيذية المستقلة.
وظائف رمزية
عند إنشاء مكتبة مشتركة ، قم بربط المراجع إلى رموز الوظائف العامة بملف
التعريف داخل المكتبة المشتركة ، إن وجد. يمكن أيضًا استخدام هذا الخيار مع ملف
- ديناميكية التصدير الخيار ، عند إنشاء موقف مستقل قابل للتنفيذ ، لربط
إشارات إلى رموز دالة عالمية للتعريف داخل الملف القابل للتنفيذ. هذه
الخيار مفيد فقط على منصات ELF التي تدعم المكتبات المشتركة والمواقف
الملفات التنفيذية المستقلة.
- قائمة ديناميكية =ملف قائمة ديناميكية
حدد اسم ملف القائمة الديناميكي للرابط. يستخدم هذا عادة عندما
إنشاء مكتبات مشتركة لتحديد قائمة الرموز العالمية التي مراجعها
لا يجب أن يرتبط بالتعريف داخل المكتبة المشتركة ، أو الإنشاء
الملفات التنفيذية المرتبطة ديناميكيًا لتحديد قائمة الرموز التي يجب إضافتها إليها
جدول الرموز في الملف القابل للتنفيذ. هذا الخيار مفيد فقط على منصات ELF
التي تدعم المكتبات المشتركة.
تنسيق القائمة الديناميكية هو نفسه نسخة عقدة بدون نطاق وعقدة
اسم. ارى VERSION للمزيد من المعلومات.
- قائمة البيانات الديناميكية
قم بتضمين كافة رموز البيانات العالمية إلى القائمة الديناميكية.
- قائمة-ديناميكية- cpp-new
قم بتوفير القائمة الديناميكية المضمنة لمشغل C ++ الجديد وحذفها. إنه مفيد بشكل أساسي
لبناء libstdc ++ مشترك.
- قائمة ديناميكية cpp-typeinfo
قم بتوفير القائمة الديناميكية المضمنة لتعريف نوع وقت تشغيل C ++.
- تحقق الأقسام
- لا تحقق المقاطع
يطلب الرابط ليس للتحقق من عناوين الأقسام بعد تعيينها لمعرفة ما إذا كان
هناك أي تداخلات. عادةً ما يقوم الرابط بإجراء هذا الفحص ، وإذا وجد
أي تداخلات ستنتج رسائل خطأ مناسبة. الرابط يعرف عن و
لا يعطي بدلات للأقسام في التراكبات. يمكن استعادة السلوك الافتراضي
باستخدام مفتاح سطر الأوامر - تحقق الأقسام. قسم التداخل ليس عادة
فحص الروابط القابلة للنقل. يمكنك فرض التحقق في هذه الحالة باستخدام ملف
- تحقق الأقسام الخيار.
- نسخة- dt- إدخالات مطلوبة
- لا حاجة لنسخ dt إدخالات
يؤثر هذا الخيار في معالجة المكتبات الديناميكية المشار إليها بواسطة علامات DT_NEEDED
في الداخل مكتبات ELF الديناميكية المذكورة في سطر الأوامر. عادة لا رابط
أضف علامة DT_NEEDED إلى ملف الإخراج الثنائي لكل مكتبة مذكورة في علامة DT_NEEDED
في مكتبة ديناميكية الإدخال. مع - نسخة- dt- إدخالات مطلوبة المحدد في الأمر
لكن أي مكتبات ديناميكية تتبعها ستحتوي على إدخالات DT_NEEDED الخاصة بها
مضاف. يمكن استعادة السلوك الافتراضي مع - لا حاجة لنسخ dt إدخالات.
يؤثر هذا الخيار أيضًا على دقة وضوح الرموز في المكتبات الديناميكية.
بدافع - نسخة- dt- إدخالات مطلوبة المكتبات الديناميكية المذكورة في سطر الأوامر ستكون
البحث بشكل متكرر ، باتباع علامات DT_NEEDED الخاصة بهم إلى مكتبات أخرى ، من أجل
حل الرموز المطلوبة من قبل ثنائي الإخراج. مع الإعداد الافتراضي ولكن
سيتوقف البحث عن المكتبات الديناميكية التي تتبعها مع المكتبة الديناميكية
بحد ذاتها. لن يتم اجتياز أي روابط DT_NEEDED لحل الرموز.
- المرجع
إخراج جدول مرجعي صليب. إذا تم إنشاء ملف خريطة رابط ، فإن التقاطع
يتم طباعة الجدول المرجعي إلى ملف الخريطة. خلاف ذلك ، يتم طباعته على المعيار
الناتج.
تنسيق الجدول بسيط عن قصد ، بحيث يمكن معالجته بسهولة
برنامج نصي إذا لزم الأمر. يتم طباعة الرموز مرتبة حسب الاسم. لكل رمز ،
يتم إعطاء قائمة بأسماء الملفات. إذا تم تعريف الرمز ، فإن الملف الأول المدرج هو ملف
موقع التعريف. إذا تم تعريف الرمز على أنه قيمة مشتركة ، فإن أي ملفات
حيث يحدث هذا تظهر بعد ذلك. أخيرًا أي ملفات تشير إلى الرمز هي
المدرجة.
--لا يوجد تعريف مشترك
يمنع هذا الخيار تخصيص العناوين للرموز الشائعة. النص
الأمر "INHIBIT_COMMON_ALLOCATION" له نفس التأثير.
لقد عادوا --لا يوجد تعريف مشترك يسمح الخيار بفصل قرار تعيين العناوين إلى
الرموز الشائعة من اختيار نوع الملف الناتج ؛ خلاف ذلك غير قابلة للنقل
يفرض نوع الإخراج تعيين عناوين للرموز المشتركة. استخدام --لا يوجد تعريف مشترك
يسمح بتعيين الرموز المشتركة المشار إليها من مكتبة مشتركة
عناوين فقط في البرنامج الرئيسي. هذا يزيل المساحة المكررة غير المستخدمة في ملف
مكتبة مشتركة ، ويمنع أيضًا أي التباس محتمل حول حل الخطأ
مكرر عندما يكون هناك العديد من الوحدات الديناميكية ذات مسارات البحث المتخصصة لـ
دقة رمز وقت التشغيل.
--defsym =رمز=التعبير
قم بإنشاء رمز عام في ملف الإخراج ، يحتوي على العنوان المطلق المعطى بواسطة
التعبير. يمكنك استخدام هذا الخيار عدة مرات حسب الضرورة لتعريف متعددة
الرموز في سطر الأوامر. يتم دعم شكل محدود من الحسابات الحسابية لـ
التعبير في هذا السياق: يمكنك إعطاء ثابت ست عشري أو اسم
رمز موجود ، أو استخدم "+" و "-" لإضافة أو طرح ثوابت سداسية عشرية أو
حرف او رمز. إذا كنت بحاجة إلى المزيد من التعبيرات التفصيلية ، ففكر في استخدام الأمر linker
لغة من نص. ملحوظة: يجب ألا تكون هناك مسافة بيضاء بينهما رمزأطلقت حملة
علامة يساوي ("=") و التعبير.
--تشابك [=نمط]
--لا ديانجلي
تتحكم هذه الخيارات في ما إذا كان سيتم إلغاء تشكيل أسماء الرموز في رسائل الخطأ وغيرها
انتاج. عندما يُطلب من الرابط إلغاء التشابك ، فإنه يحاول تقديم أسماء الرموز في ملف
نمط قابل للقراءة: يقطع الشرطات السفلية البادئة إذا تم استخدامها بواسطة ملف الكائن
تنسيق ، وتحويل أسماء الرموز المشوهة C ++ إلى أسماء يمكن للمستخدم قراءتها. مختلف
المترجمات لها أنماط مختلفة من التشويه. يمكن استخدام حجة أسلوب فك التشابك الاختياري
تستخدم لاختيار أسلوب فك التشابك المناسب للمترجم الخاص بك. سوف الرابط
demangle افتراضيًا ما لم يكن متغير البيئة COLLECT_NO_DEMANGLE تم تعيينه. هؤلاء
يمكن استخدام الخيارات لتجاوز الافتراضي.
-Iملف
- رابط ديناميكي =ملف
قم بتعيين اسم الرابط الديناميكي. هذا مفيد فقط عند التوليد
الملفات التنفيذية ELF المرتبطة ديناميكيًا. الرابط الديناميكي الافتراضي هو الصحيح عادةً ؛
لا تستخدم هذا إلا إذا كنت تعرف ما تفعله.
--لا رابط ديناميكي
عند إنتاج ملف قابل للتنفيذ ، احذف طلب استخدام رابط ديناميكي في
وقت التحميل. هذا مفيد فقط لملفات ELF التنفيذية التي تحتوي على ديناميكي
الترحيل ، وعادة ما يتطلب رمز نقطة الدخول القادر على معالجة هذه
الترحيلات.
- تحذيرات قاتلة
--لا تحذيرات مميتة
تعامل مع جميع التحذيرات على أنها أخطاء. يمكن استعادة السلوك الافتراضي مع الخيار
--لا تحذيرات مميتة.
--force-exe-لاحقة
تأكد من أن ملف الإخراج له لاحقة. exe.
إذا كان ملف الإخراج المرتبط بالكامل الذي تم إنشاؤه بنجاح لا يحتوي على ".exe" أو ".dll"
لاحقة ، يفرض هذا الخيار على الرابط نسخ ملف الإخراج إلى أحد نفس الاسم
مع لاحقة ". exe". يكون هذا الخيار مفيدًا عند استخدام ملفات makefiles Unix غير المعدلة في ملف
مضيف Microsoft Windows ، نظرًا لأن بعض إصدارات Windows لن تقوم بتشغيل صورة ما لم تكن كذلك
ينتهي بـ ". exe" لاحقة.
- أقسام gc
--لا يوجد أقسام gc
تمكين جمع القمامة لأقسام الإدخال غير المستخدمة. يتم تجاهله على الأهداف التي تفعل ذلك
لا تدعم هذا الخيار. السلوك الافتراضي (عدم تنفيذ هذه القمامة
جمع) عن طريق تحديد --لا يوجد أقسام gc في سطر الأوامر. ملحوظة
يتم دعم تجميع البيانات المهملة لأهداف تنسيق COFF و PE ، ولكن تنسيق
يعتبر التنفيذ حاليًا تجريبيًا.
- أقسام gc يقرر أي أقسام الإدخال يتم استخدامها من خلال فحص الرموز و
الترحيلات. القسم الذي يحتوي على رمز الدخول وجميع الأقسام التي تحتوي على
سيتم الاحتفاظ بالرموز غير المحددة في سطر الأوامر ، وكذلك الأقسام التي تحتوي على
الرموز المشار إليها بواسطة الكائنات الديناميكية. لاحظ أنه عند إنشاء مكتبات مشتركة ، فإن ملف
يجب أن يفترض الرابط أنه تمت الإشارة إلى أي رمز مرئي. مرة واحدة هذه المجموعة الأولية من
تم تحديد الأقسام ، يقوم الرابط بوضع علامة بشكل متكرر على أنها مستخدمة في أي قسم
المشار إليها من خلال عمليات نقلهم. ارى --دخول و --غير معرف.
يمكن تعيين هذا الخيار عند عمل ارتباط جزئي (مع تمكين الخيار -r). في هذا
الحالة يجب تحديد جذر الرموز التي تم الاحتفاظ بها صراحةً إما بواسطة --دخول or
--غير معرف الخيار أو عن طريق أمر "ENTRY" في البرنامج النصي رابط.
- طباعة- أقسام- gc
--لا يوجد طباعة- أقسام- gc
قائمة بجميع الأقسام التي تم إزالتها عن طريق جمع القمامة. القائمة مطبوعة على stderr.
يكون هذا الخيار فعالاً فقط إذا تم تمكين جمع البيانات المهملة عبر ملف
- أقسام gc) اختيار. السلوك الافتراضي (عدم سرد الأقسام الموجودة
إزالتها) عن طريق تحديد --لا يوجد طباعة- أقسام- gc في سطر الأوامر.
- تنسيق الإخراج والطباعة
اطبع اسم تنسيق الإخراج الافتراضي (ربما يتأثر بسطر أوامر آخر
والخيارات). هذه هي السلسلة التي ستظهر في نص رابط "OUTPUT_FORMAT"
أمر.
- استخدام ذاكرة الطباعة
حجم الطباعة المستخدم والحجم الإجمالي والحجم المستخدم لمناطق الذاكرة التي تم إنشاؤها باستخدام الذاكرة
أمر. هذا مفيد للأهداف المضمنة للحصول على عرض سريع للمقدار المجاني
ذاكرة. يحتوي تنسيق الإخراج على عنوان واحد وسطر واحد لكل منطقة. إنها
يمكن قراءتها بواسطة الإنسان والتحليل بسهولة بواسطة الأدوات. فيما يلي مثال على الإخراج:
منطقة الذاكرة المستخدمة الحجم المنطقة الحجم٪ العمر المستخدم
ROM: 256 كيلو بايت 1 ميجا بايت 25.00٪
ذاكرة الوصول العشوائي: 32 B 2 جيجابايت 0.00٪
--مساعدة
اطبع ملخصًا لخيارات سطر الأوامر على الإخراج القياسي والخروج.
--تهدف المساعدة
اطبع ملخصًا لجميع الخيارات المحددة المستهدفة على الإخراج القياسي والخروج.
-خريطة =ملف الخريطة
اطبع خريطة ارتباط إلى الملف ملف الخريطة. انظر وصف -M الخيار أعلاه.
--لا تحفظ الذاكرة
ld تعمل عادةً على تحسين السرعة على استخدام الذاكرة عن طريق التخزين المؤقت لجداول الرموز الخاصة بـ
إدخال الملفات في الذاكرة. هذا الخيار يقول ld لتحسين استخدام الذاكرة بدلاً من ذلك ، عن طريق
إعادة قراءة جداول الرموز حسب الضرورة. قد يكون هذا مطلوبًا إذا ld نفدت
مساحة الذاكرة أثناء ربط ملف تنفيذي كبير.
--لا - غير محدد
-z defs
الإبلاغ عن مراجع الرموز التي لم يتم حلها من ملفات الكائنات العادية. يتم ذلك حتى لو
يقوم الرابط بإنشاء مكتبة مشتركة غير رمزية. مفتاح
- [no-] allow-shlib-undefined يتحكم في سلوك الإبلاغ دون حل
المراجع الموجودة في المكتبات المشتركة التي تم ربطها بـ.
- السماح متعدد التعريف
-z مولديف
عادةً عندما يتم تحديد رمز عدة مرات ، سيقوم الرابط بالإبلاغ عن خطأ فادح
خطأ. تسمح هذه الخيارات بتعريفات متعددة وسيتم استخدام التعريف الأول.
--السماح-شليب-غير محدد
- no-allow-shlib-undefined
يسمح أو لا يسمح بالرموز غير المعرفة في المكتبات المشتركة. هذا التبديل مشابه لـ
--لا - غير محدد إلا أنه يحدد السلوك عندما تكون الرموز غير المحددة
في مكتبة مشتركة بدلاً من ملف كائن عادي. لا يؤثر على الكيفية
يتم التعامل مع الرموز غير المعرفة في ملفات الكائنات العادية.
السلوك الافتراضي هو الإبلاغ عن الأخطاء لأي رموز غير محددة مشار إليها في
مكتبات مشتركة إذا تم استخدام الرابط لإنشاء ملف تنفيذي ، ولكن للسماح
لهم إذا تم استخدام الرابط لإنشاء مكتبة مشتركة.
أسباب السماح لمراجع الرموز غير المعرفة في المكتبات المشتركة المحددة في
وقت الارتباط هو:
· قد لا تكون المكتبة المشتركة المحددة في وقت الارتباط هي نفس المكتبة الموجودة
متوفر في وقت التحميل ، لذلك قد يكون الرمز قابلاً للحل بالفعل في وقت التحميل.
· توجد بعض أنظمة التشغيل ، مثل BeOS و HPPA ، حيث توجد رموز غير محددة بتنسيق
المكتبات المشتركة أمر طبيعي.
نواة BeOS على سبيل المثال تصحيحات المكتبات المشتركة في وقت التحميل للتحديد
أيهما أكثر ملاءمة للعمارة الحالية. هذا هو
تستخدم ، على سبيل المثال ، لتحديد وظيفة memset المناسبة ديناميكيًا.
- لا - نسخة غير محددة
عادةً عندما يكون للرمز إصدار غير محدد ، سيتجاهله الرابط. هذه
الخيار لا يسمح بالرموز ذات الإصدار غير المحدد وسيتم إصدار خطأ فادح
بدلا من ذلك.
- الافتراضي المتماثل
إنشاء واستخدام إصدار رمز افتراضي (السونام) للرموز المصدرة غير المُصدرة.
- افتراضي استيراد سيمفر
إنشاء واستخدام إصدار رمز افتراضي (السونام) للرموز المستوردة غير المحسّنة.
--لا يوجد تحذير - عدم تطابق
عادة ld سوف يعطي خطأ إذا حاولت ربط ملفات الإدخال التي هي
غير متطابقة لسبب ما ، ربما لأنه تم تجميعها من أجل مختلف
معالجات أو ل endiannesses مختلفة. هذا الخيار يقول ld ما ينبغي
تسمح بصمت بمثل هذه الأخطاء المحتملة. يجب استخدام هذا الخيار فقط بعناية ، في
الحالات التي تتخذ فيها بعض الإجراءات الخاصة التي تضمن وجود أخطاء الرابط
غير مناسب.
--لا يوجد تحذير - بحث - عدم تطابق
عادة ld ستعطي تحذيرًا إذا عثرت على مكتبة غير متوافقة أثناء مكتبة
بحث. هذا الخيار يكتم التحذير.
--لا أرشيف كامل
قم بإيقاف تشغيل تأثير - أرشيف كامل خيار لملفات الأرشيف اللاحقة.
- noinhibit-exec
احتفظ بملف الإخراج القابل للتنفيذ متى كان لا يزال قابلاً للاستخدام. عادة ، الرابط
لن ينتج ملف إخراج إذا واجه أخطاء أثناء عملية الارتباط ؛ هو - هي
يخرج دون كتابة ملف الإخراج عندما يصدر أي خطأ على الإطلاق.
-نوستدليب
تم تحديد دلائل مكتبة البحث فقط صراحة في سطر الأوامر. مكتبة
الدلائل المحددة في البرامج النصية للرابط (بما في ذلك البرامج النصية للرابط المحدد في
سطر الأوامر).
- تنسيق =تنسيق الإخراج
ld قد يتم تكوينه لدعم أكثر من نوع واحد من ملفات الكائن. إذا كان لديك ld is
تم تكوينه بهذه الطريقة ، يمكنك استخدام ملف - تنسيق خيار لتحديد التنسيق الثنائي لـ
ملف كائن الإخراج. حتى عندما ld تم تكوينه لدعم كائن بديل
التنسيقات ، لا تحتاج عادةً إلى تحديد ذلك ، مثل ld يجب تهيئتها لإنتاج
كتنسيق إخراج افتراضي هو التنسيق الأكثر شيوعًا على كل جهاز. تنسيق الإخراج هو
سلسلة نصية ، اسم تنسيق معين تدعمه مكتبات BFD. (تستطيع
سرد التنسيقات الثنائية المتاحة مع com.objdump -i.) الأمر النصي
يمكن لـ "OUTPUT_FORMAT" أيضًا تحديد تنسيق الإخراج ، ولكن هذا الخيار يحل محله.
-فطيرة
--pic- قابل للتنفيذ
إنشاء منصب مستقل قابل للتنفيذ. هذا مدعوم حاليًا على ELF فقط
المنصات. وضع الملفات التنفيذية المستقلة مماثلة للمكتبات المشتركة في ذلك
يتم نقلهم بواسطة الرابط الديناميكي إلى العنوان الظاهري الذي يختاره نظام التشغيل
منهم (والتي يمكن أن تختلف بين الدعوات). مثل الملفات القابلة للتنفيذ المرتبطة ديناميكيًا
يمكن تنفيذها والرموز المحددة في الملف القابل للتنفيذ لا يمكن تجاوزها
مكتبات مشتركة.
-Qmagic
تم تجاهل هذا الخيار لتوافق Linux.
-QY تم تجاهل هذا الخيار للتوافق مع SVR4.
--يستريح
- لا الاسترخاء
خيار مع تأثيرات تعتمد على الآلة. هذا الخيار مدعوم فقط على عدد قليل
أهداف.
في بعض المنصات ، يتوفر ملف --يستريح الخيار ينفذ تحسينات عالمية محددة الهدف
التي تصبح ممكنة عندما يقرر الرابط عنونة في البرنامج ، مثل
الاسترخاء في أوضاع العنوان ، وتوليف الإرشادات الجديدة ، واختيار إصدار أقصر من
التعليمات الحالية ، والجمع بين القيم الثابتة.
في بعض الأنظمة الأساسية ، قد تؤدي التحسينات العامة لوقت الارتباط هذه إلى إجراء تصحيح رمزي لـ
الناتج القابل للتنفيذ المستحيل. من المعروف أن هذا هو الحال بالنسبة لماتسوشيتا
عائلة المعالجات MN10200 و MN10300.
على الأنظمة الأساسية التي لا يتم دعم ذلك فيها ، --يستريح تم قبوله ولكن تم تجاهله.
على منصات حيث --يستريح يتم قبول الخيار - لا الاسترخاء يمكن استخدامها للتعطيل
الخاصية.
- الاحتفاظ برموز ملف =اسم الملف
احتفظ فقط الرموز المدرجة في الملف اسم الملفونبذ كل الآخرين. اسم الملف
هو ببساطة ملف ثابت ، مع اسم رمز واحد في كل سطر. هذا الخيار بشكل خاص
مفيد في البيئات (مثل VxWorks) حيث يوجد جدول رموز عمومي كبير
تراكمت تدريجيًا ، للحفاظ على ذاكرة وقت التشغيل.
- الاحتفاظ برموز ملف هل ليس تجاهل الرموز غير المحددة أو الرموز المطلوبة لـ
الترحيلات.
يمكنك فقط تحديد - الاحتفاظ برموز ملف مرة واحدة في سطر الأوامر. يتجاوز -s
و -S.
-rpath =دير
أضف دليلًا إلى مسار البحث في مكتبة وقت التشغيل. يستخدم هذا عند ربط ELF
قابل للتنفيذ مع الكائنات المشتركة. الجميع - مسار الحجج متسلسلة وتمريرها إلى
رابط وقت التشغيل ، والذي يستخدمه لتحديد موقع الكائنات المشتركة في وقت التشغيل. ال - مسار
يستخدم الخيار أيضًا عند تحديد موقع الكائنات المشتركة التي تحتاجها الكائنات المشتركة
المدرجة صراحة في الارتباط ؛ انظر وصف -rpath- الارتباط اختيار. إذا
- مسار لا يتم استخدامه عند ربط ملف تنفيذي ELF ، محتويات البيئة
سيتم استخدام "LD_RUN_PATH" المتغير إذا تم تعريفه.
لقد عادوا - مسار يمكن أيضًا استخدام الخيار على SunOS. بشكل افتراضي ، في SunOS ، سيقوم الرابط
تشكل مسار بحث وقت التشغيل من بين جميع ملفات -L يتم إعطاء الخيارات. اذا كان - مسار خيار
عند استخدامه ، سيتم تشكيل مسار البحث في وقت التشغيل حصريًا باستخدام امتداد - مسار الخيارات،
تجاهل -L والخيارات. يمكن أن يكون هذا مفيدًا عند استخدام gcc ، مما يضيف الكثير -L
الخيارات التي قد تكون على أنظمة الملفات المحملة على NFS.
للتوافق مع روابط ELF الأخرى ، إذا كان الملف -R الخيار متبوع بدليل
name ، بدلاً من اسم الملف ، يتم التعامل معه على أنه امتداد - مسار الخيار.
-rpath-link =دير
عند استخدام ELF أو SunOS ، قد تتطلب مكتبة مشتركة أخرى. يحدث هذا عندما يكون ملف
يتضمن ارتباط "ld -shared" مكتبة مشتركة كأحد ملفات الإدخال.
عندما يواجه الرابط مثل هذه التبعية عند القيام بعمل غير مشترك وغير قابل للنقل
رابط ، سيحاول تلقائيًا تحديد موقع المكتبة المشتركة المطلوبة وتضمينها
في الرابط ، إذا لم يتم تضمينه بشكل صريح. في مثل هذه الحالة ، فإن -rpath- الارتباط خيار
يحدد المجموعة الأولى من الدلائل للبحث. ال -rpath- الارتباط قد يحدد الخيار
تسلسل أسماء الدلائل إما عن طريق تحديد قائمة بالأسماء مفصولة بـ
النقطتين ، أو بالظهور عدة مرات.
يجب استخدام هذا الخيار بحذر لأنه يتجاوز مسار البحث الذي قد يكون به
تم تجميعها في مكتبة مشتركة. في مثل هذه الحالة من الممكن استخدام
عن غير قصد مسار بحث مختلف عن الذي سيفعله رابط وقت التشغيل.
يستخدم الرابط مسارات البحث التالية لتحديد موقع المكتبات المشتركة المطلوبة:
1. أي أدلة يحددها -rpath- الارتباط خيارات.
2. أي أدلة يحددها - مسار والخيارات. الفرق بين - مسار و
-rpath- الارتباط هي تلك الدلائل المحددة من قبل - مسار خيارات مدرجة في
قابل للتنفيذ ويستخدم في وقت التشغيل ، في حين أن ملف -rpath- الارتباط الخيار الوحيد الفعال
في وقت الارتباط. يبحث - مسار بهذه الطريقة مدعوم فقط من خلال الروابط الأصلية و
عبر الروابط التي تم تكوينها باستخدام - مع سيسروت الخيار.
3. في نظام ELF ، للروابط الأصلية ، إذا كان الملف - مسار و -rpath- الارتباط كانت الخيارات
غير مستخدم ، ابحث في محتويات متغير البيئة "LD_RUN_PATH".
4. في SunOS ، إذا كان - مسار لم يتم استخدام الخيار ، ابحث في أي أدلة محددة
استخدام -L خيارات.
5. للحصول على رابط أصلي ، ابحث في محتويات متغير البيئة
"LD_LIBRARY_PATH".
6. بالنسبة إلى رابط ELF الأصلي ، فإن الدلائل الموجودة في "DT_RUNPATH" أو "DT_RPATH" لملف مشترك
يتم البحث في المكتبة عن المكتبات المشتركة التي تحتاجها. إدخالات "DT_RPATH" هي
يتم تجاهله في حالة وجود إدخالات "DT_RUNPATH".
7. الدلائل الافتراضية ، عادة / ليب و / البيرة / ليب.
8. للحصول على رابط أصلي على نظام ELF ، إذا كان الملف /etc/ld.so.conf القائمة
من الدلائل الموجودة في هذا الملف.
إذا لم يتم العثور على المكتبة المشتركة المطلوبة ، فسيقوم الرابط بإصدار تحذير و
تواصل مع الارتباط.
-مشاركة
-قابلة للمشاركة
قم بإنشاء مكتبة مشتركة. هذا مدعوم حاليًا فقط في ELF و XCOFF و SunOS
المنصات. في SunOS ، سيقوم الرابط تلقائيًا بإنشاء مكتبة مشتركة إذا كان -e
الخيار غير مستخدم وهناك رموز غير محددة في الارتباط.
- شائع
--sort-common = تصاعدي
--sort-common = تنازلي
هذا الخيار يقول ld لفرز الرموز الشائعة عن طريق المحاذاة تصاعديًا أو
ترتيبًا تنازليًا عند وضعها في أقسام الإخراج المناسبة. الرمز
المحاذاة في الاعتبار هي ستة عشر بايت أو أكبر ، وثمانية بايت ، وأربعة بايت ، واثنان بايت ، و
بايت واحد. هذا لمنع الفجوات بين الرموز بسبب قيود المحاذاة. إذا كان الجواب لا
يتم تحديد ترتيب الفرز ، ثم يتم افتراض الترتيب التنازلي.
- قسم الفرز = الاسم
سيطبق هذا الخيار "SORT_BY_NAME" على جميع أنماط أقسام أحرف البدل في الرابط
النصي.
- قسم الفرز = محاذاة
سيتم تطبيق هذا الخيار "SORT_BY_ALIGNMENT" على جميع أنماط أقسام أحرف البدل في
نص رابط.
- تقسيم بملف [=المقاس]
على غرار - تقسيم تلو الآخر ولكنه ينشئ قسم إخراج جديدًا لكل ملف إدخال عندما
المقاس يتم التوصل إليه. المقاس الحجم الافتراضي هو 1 إذا لم يتم تقديمه.
- تقسيم تلو الآخر [=عد]
يحاول إنشاء أقسام إضافية في ملف الإخراج بحيث لا يوجد قسم إخراج واحد بتنسيق
يحتوي الملف على أكثر من عد الترحيلات. هذا مفيد عند توليد ضخمة
الملفات القابلة للنقل للتنزيل إلى نواة معينة في الوقت الفعلي باستخدام كائن COFF
تنسيق الملف؛ نظرًا لأن COFF لا يمكن أن تمثل أكثر من 65535 عملية نقل في واحدة
الجزء. لاحظ أن هذا سيفشل في العمل مع تنسيقات ملفات الكائن التي لا تعمل
دعم الأقسام التعسفية. لن يقوم الرابط بتقسيم أقسام الإدخال الفردية
لإعادة التوزيع ، لذلك إذا كان قسم الإدخال الفردي يحتوي على أكثر من عد الانتقال
سيحتوي قسم الإخراج على العديد من عمليات النقل. عد الافتراضي إلى قيمة
32768
--الحالات
حساب وعرض الإحصائيات حول تشغيل الرابط ، مثل التنفيذ
استخدام الوقت والذاكرة.
- sysroot =دليل
استعمل دليل كموقع sysroot ، متجاوزًا الإعداد الافتراضي لوقت التكوين.
هذا الخيار مدعوم فقط من خلال الروابط التي تم تكوينها باستخدام - مع سيسروت.
- تنسيق تقليدي
بالنسبة لبعض الأهداف ، يكون ناتج ld يختلف في بعض النواحي عن إخراج البعض
رابط موجود. يطلب هذا التبديل ld لاستخدام التنسيق التقليدي بدلاً من ذلك.
على سبيل المثال ، في SunOS ، ld يجمع بين الإدخالات المكررة في جدول سلسلة الرموز. هذه
يمكن أن يقلل حجم ملف الإخراج بمعلومات تصحيح الأخطاء الكاملة بأكثر من 30
نسبه مئويه. للأسف ، برنامج SunOS "dbx" لا يمكنه قراءة البرنامج الناتج
("gdb" ليس لديه مشكلة). ال - تنسيق تقليدي يقول التبديل ld لعدم الجمع
إدخالات مكررة.
- بداية القسم =اسم القسم=ORG
حدد موقع قسم في ملف الإخراج على العنوان المطلق الذي قدمه ORG. يمكنك استخدام
هذا الخيار عدة مرات حسب الضرورة لتحديد أقسام متعددة في الأمر
الخط. ORG يجب أن يكون عددًا صحيحًا سداسيًا عشريًا واحدًا ؛ للتوافق مع الروابط الأخرى ،
يمكنك حذف البادئة 0x عادة ما يرتبط بالقيم السداسية العشرية. ملحوظة: هناك
يجب ألا تكون هناك مسافة بيضاء بين اسم القسم، علامة يساوي ("=") و ORG.
-Tbss =ORG
- البيانات =ORG
النص =ORG
مثل - بداية القسم، مع ".bss" أو ".data" أو ".text" مثل اسم القسم.
- مقطع نصي =ORG
عند إنشاء ملف ELF قابل للتنفيذ ، فإنه سيحدد عنوان البايت الأول من النص
قطعة.
-القطعة -Trodata =ORG
عند إنشاء ELF قابل للتنفيذ أو كائن مشترك لهدف حيث تكون البيانات للقراءة فقط
في الجزء الخاص به منفصل عن النص القابل للتنفيذ ، فسيتم تعيين عنوان
البايت الأول من مقطع البيانات للقراءة فقط.
- الجزء القديم =ORG
عند إنشاء ELF قابل للتنفيذ أو كائن مشترك لطراز الذاكرة المتوسطة x86-64 ، فإنه
سيحدد عنوان البايت الأول من مقطع ldata.
- رموز غير محلولة =طريقة
حدد كيفية التعامل مع الرموز التي لم يتم حلها. هناك أربع قيم ممكنة لـ
طريقة:
تجاهل الكل
لا تبلغ عن أي رموز لم يتم حلها.
تقرير الكل
الإبلاغ عن جميع الرموز التي لم يتم حلها. هذا هو الافتراضي.
تجاهل ملفات الكائن
قم بالإبلاغ عن الرموز التي لم يتم حلها والموجودة في المكتبات المشتركة ، ولكن تجاهلها
إذا كانت تأتي من ملفات كائن عادية.
تجاهل في libs المشتركة
قم بالإبلاغ عن الرموز التي لم يتم حلها والتي تأتي من ملفات الكائنات العادية ، ولكن تجاهلها إذا كان
يأتون من مكتبات مشتركة. يمكن أن يكون هذا مفيدًا عند إنشاء ملف ديناميكي
ثنائي ومن المعروف أن جميع المكتبات المشتركة التي يجب الرجوع إليها
يتم تضمينها في سطر أوامر الرابط.
يمكن أيضًا التحكم في سلوك المكتبات المشتركة بمفردها بواسطة
- [no-] allow-shlib-undefined الخيار.
عادةً ما يُنشئ الرابط رسالة خطأ لكل رمز لم يتم حله تم الإبلاغ عنه
لكن الخيار - رموز لم يتم حلها يمكن تغيير هذا إلى تحذير.
--dll- مطوّل
- الإسراف [=عدد]
اعرض رقم الإصدار لـ ld وقائمة مضاهاة رابط المدعومة. عرض
ملفات الإدخال التي يمكن فتحها ولا يمكن فتحها. اعرض نص الرابط المستخدم من قبل
الرابط. إذا كان الخيار عدد الوسيطة> 1 ، ستكون حالة رمز الملحق أيضًا
عرض.
- النسخة- النصي =الإصدار النصي
حدد اسم إصدار البرنامج النصي للرابط. يستخدم هذا عادة عندما
إنشاء مكتبات مشتركة لتحديد معلومات إضافية حول الإصدار
التسلسل الهرمي للمكتبة قيد الإنشاء. هذا الخيار مدعوم بالكامل فقط في ELF
المنصات التي تدعم المكتبات المشتركة ؛ ارى VERSION. إنه مدعوم جزئيًا في
منصات PE ، التي يمكنها استخدام البرامج النصية للإصدار لتصفية رؤية الرمز في التصدير التلقائي
الوضع: أي رموز مميزة محلي في الإصدار النصي لن يتم تصديرها.
- تحذير مشترك
تحذير عند دمج رمز مشترك مع رمز مشترك آخر أو مع رمز
تعريف. تسمح روابط Unix بهذه الممارسة القذرة إلى حد ما ، لكن الروابط على البعض
أنظمة التشغيل الأخرى لا تفعل ذلك. يتيح لك هذا الخيار البحث عن المشاكل المحتملة
من الجمع بين الرموز العالمية. لسوء الحظ ، تستخدم بعض مكتبات لغة سي هذه الممارسة ، لذا
قد تتلقى بعض التحذيرات حول الرموز في المكتبات وكذلك في برامجك.
هناك ثلاثة أنواع من الرموز العالمية ، موضحة هنا بأمثلة C:
مادبا i = 1;
تعريف يدخل في قسم البيانات المهيأة لملف الإخراج.
خارجي مادبا i;
مرجع غير محدد لا يخصص مساحة. يجب أن يكون هناك إما ملف
تعريف أو رمز مشترك للمتغير في مكان ما.
مادبا i;
رمز مشترك. إذا كان هناك فقط (واحد أو أكثر) رمز مشترك للمتغير ،
ينتقل في منطقة البيانات غير المهيأة لملف الإخراج. يدمج الرابط
عدة رموز مشتركة لنفس المتغير في رمز واحد. إذا كانوا كذلك
بأحجام مختلفة ، فهي تختار الحجم الأكبر. يتحول الرابط إلى رمز مشترك
في إعلان ، إذا كان هناك تعريف لنفس المتغير.
لقد عادوا - تحذير مشترك يمكن أن ينتج عن الخيار خمسة أنواع من التحذيرات. كل تحذير يتكون من
زوج من الخطوط: الأول يصف الرمز الذي تمت مواجهته للتو ، والثاني
يصف الرمز السابق الذي تم مواجهته بنفس الاسم. أحدهما أو كلاهما
ستكون الرموز رمزًا شائعًا.
1. تحويل رمز مشترك إلى مرجع ، لأنه يوجد بالفعل تعريف
للرمز.
( ): تحذير: شائع في " "
تم تجاوزه بحكم التعريف
( ): تحذير: محدد هنا
2. تحويل رمز شائع إلى مرجع ، لأنه يوجد تعريف لاحق لـ
رمز مصادفة. هذه هي نفس الحالة السابقة ، باستثناء أن ملف
يتم مواجهة الرموز بترتيب مختلف.
( ): تحذير: تعريف ` "
تجاوز المشترك
( ): تحذير: الشائع هنا
3. دمج رمز مشترك مع رمز مشترك سابق بنفس الحجم.
( ): تحذير: متعدد مشترك
من ` "
( ): تحذير: الشائع السابق هنا
4. دمج رمز مشترك مع رمز مشترك سابق أكبر.
( ): تحذير: شائع في " "
تم تجاوزه بواسطة مشترك أكبر
( ): تحذير: الشائع الأكبر موجود هنا
5. دمج رمز مشترك مع رمز مشترك أصغر سابقًا. نفس الشئ
كما في الحالة السابقة ، باستثناء أن الرموز موجودة في شكل مختلف
النظام.
( ): تحذير: شائع في " "
تجاوز المشترك الأصغر
( ): تحذير: الشائع الأصغر موجود هنا
- تحذير المنشئين
تحذير إذا تم استخدام أي منشآت عالمية. هذا مفيد فقط لملف كائن قليل
التنسيقات. بالنسبة إلى التنسيقات مثل COFF أو ELF ، لا يمكن للرابط اكتشاف استخدام ملفات
الصانعين.
--حذير متعدد GP
تحذير إذا كانت هناك حاجة إلى قيم متعددة للمؤشر العام في ملف الإخراج. هذا فقط
مفيد لبعض المعالجات ، مثل Alpha. على وجه التحديد ، بعض المعالجات
وضع الثوابت ذات القيمة الكبيرة في قسم خاص. سجل خاص (العالمية
المؤشر) إلى منتصف هذا القسم ، بحيث يمكن تحميل الثوابت
بكفاءة عبر وضع العنونة النسبي للسجل الأساسي. منذ الإزاحة في القاعدة-
الأسلوب النسبي للتسجيل ثابت وصغير نسبيًا (على سبيل المثال ، 16 بت) ، وهذا يحد من
الحجم الأقصى للمسبح الثابت. وبالتالي ، في البرامج الكبيرة ، غالبًا ما يكون من الضروري
استخدام قيم مؤشر عالمية متعددة من أجل أن تكون قادرة على معالجة كل ما هو ممكن
الثوابت. يؤدي هذا الخيار إلى إصدار تحذير عند حدوث هذه الحالة.
- تحذير مرة واحدة
تحذير مرة واحدة فقط لكل رمز غير محدد ، بدلاً من التحذير مرة واحدة لكل وحدة تشير إلى
هنا.
- قسم التحذير - محاذاة
تحذير إذا تم تغيير عنوان قسم الإخراج بسبب المحاذاة. عادة،
سيتم تعيين المحاذاة بواسطة قسم الإدخال. سيتم تغيير العنوان فقط إذا كان
غير محدد صراحة ؛ أي ، إذا كان الأمر "SECTIONS" لا يحدد بداية
عنوان القسم.
--حذير مشترك textrel
تحذير إذا قام الرابط بإضافة DT_TEXTREL إلى كائن مشترك.
- تحذير البديل م
تحذير إذا كان الكائن يحتوي على كود بديل لجهاز ELF.
- رموز لم يتم حلها
إذا كان الرابط سيبلغ عن رمز لم يتم حله (انظر الخيار
- رموز غير محلولة) عادةً ما يؤدي إلى حدوث خطأ. هذا الخيار يجعلها
توليد تحذير بدلا من ذلك.
- رموز لم يتم حلها خطأ
يؤدي هذا إلى استعادة السلوك الافتراضي للرابط المتمثل في إنشاء أخطاء عند الإبلاغ
الرموز التي لم يتم حلها.
- أرشيف كامل
لكل أرشيف مذكور في سطر الأوامر بعد ملف - أرشيف كامل اختيار،
قم بتضمين كل ملف كائن في الأرشيف في الرابط ، بدلاً من البحث في ملف
أرشيف لملفات الكائن المطلوبة. يستخدم هذا عادة لتحويل ملف أرشيف
في مكتبة مشتركة ، مما يجبر كل كائن على أن يتم تضمينه في المشتركة الناتجة
مكتبة. يمكن استخدام هذا الخيار أكثر من مرة.
ملاحظتان عند استخدام هذا الخيار من دول مجلس التعاون الخليجي: أولاً ، لا تعرف دول مجلس التعاون الخليجي عن هذا الخيار ،
لذلك عليك أن تستخدم -Wl ، -آلآرشيف. ثانيًا ، لا تنسى استخدام
-Wl ، -لا-كامل- أرشيف بعد قائمة المحفوظات الخاصة بك ، لأن دول مجلس التعاون الخليجي ستضيف قائمتها الخاصة
من المحفوظات إلى الارتباط الخاص بك وقد لا تريد أن تؤثر هذه العلامة على تلك أيضًا.
- التفاف =رمز
استخدم وظيفة المجمع لـ رمز. أي إشارة غير محددة إلى رمز سيتم حلها
لحزم_رمز". أي إشارة غير محددة إلى "__real_رمز" سوف تحل ل
رمز.
يمكن استخدام هذا لتوفير غلاف لوظيفة النظام. وظيفة المجمع
يجب أن يسمى "__التفاف_رمز". إذا كانت ترغب في استدعاء وظيفة النظام ، ينبغي لها ذلك
استدعاء "__real_رمز".
هذا مثال تافه:
باطل *
__ التفاف_مولوك (الحجم _ ج)
{
printf ("تم استدعاء malloc مع٪ zu \ n"، c)؛
عودة __real_malloc (ج) ؛
}
إذا قمت بربط رمز آخر بهذا الملف باستخدام --لف malloc، ثم كل المكالمات إلى "malloc"
سيستدعي الوظيفة "__wrap_malloc" بدلاً من ذلك. استدعاء "__real_malloc" في
"__wrap_malloc" ستستدعي وظيفة "malloc" الحقيقية.
قد ترغب في توفير وظيفة "__real_malloc" أيضًا ، بحيث لا تحتوي الروابط على
--لف الخيار سينجح. إذا قمت بذلك ، يجب ألا تضع تعريف
"__real_malloc" في نفس الملف مثل "__wrap_malloc" ؛ إذا قمت بذلك ، يجوز للمجمع
حل الاستدعاء قبل أن تتاح للرابط فرصة لفه بـ "malloc".
--eh- الإطار- تقرير التنمية البشرية
طلب إنشاء قسم ".eh_frame_hdr" ورأس مقطع ELF "PT_GNU_EH_FRAME".
--لا يوجد - ولدت - الاسترخاء المعلومات
طلب إنشاء معلومات استرخاء ".eh_frame" لأقسام التعليمات البرمجية التي تم إنشاؤها بواسطة رابط مثل
PLT. يتم تشغيل هذا الخيار افتراضيًا إذا تم دعم معلومات فك الارتباط التي تم إنشاؤها بواسطة الرابط.
--تمكين-جديد- dtags
--تعطيل-جديد-دتاجس
يمكن لهذا الرابط إنشاء العلامات الديناميكية الجديدة في ELF. لكن أنظمة ELF الأقدم قد لا تفعل ذلك
افهمهم. إذا حددت --تمكين-جديد- dtags، ستكون العلامات الديناميكية الجديدة
تم إنشاؤها حسب الحاجة وسيتم حذف العلامات الديناميكية الأقدم. إذا حددت
--تعطيل-جديد-دتاجس، لن يتم إنشاء علامات ديناميكية جديدة. بشكل افتراضي ، الديناميكية الجديدة
لم يتم إنشاء العلامات. لاحظ أن هذه الخيارات متاحة فقط لأنظمة ELF.
- حجم الهاش =عدد
عيّن الحجم الافتراضي لجداول تجزئة الرابط على رقم أولي قريب منه عدد.
يمكن أن تؤدي زيادة هذه القيمة إلى تقليل طول الوقت الذي يستغرقه الرابط لأداءه
المهام ، على حساب زيادة متطلبات ذاكرة الرابط. بصورة مماثلة
يمكن أن يؤدي تقليل هذه القيمة إلى تقليل متطلبات الذاكرة على حساب السرعة.
- أسلوب هاش =نمط
قم بتعيين نوع جدول (جداول) تجزئة الرابط. نمط يمكن أن يكون إما "sysv" لـ ELF الكلاسيكي
قسم ".hash" أو قسم "gnu" للنمط الجديد GNU ".gnu.hash" أو قسم "كلاهما" لكليهما
جداول تجزئة ELF الكلاسيكية ".hash" وأسلوب GNU الجديد ".gnu.hash". الافتراضي هو "sysv".
--أقسام ضغط التصحيح = لا شيء
- ضغط-تصحيح-المقاطع = زليب
--اضغط-تصحيح-المقاطع = زليب-جنو
- ضغط-تصحيح-المقاطع = زليب-جابي
في الأنظمة الأساسية لـ ELF ، تتحكم هذه الخيارات في كيفية ضغط أقسام تصحيح أخطاء DWARF باستخدام
زليب. --أقسام ضغط التصحيح = لا شيء لا يضغط أقسام تصحيح DWARF.
--اضغط-تصحيح-المقاطع = زليب-جنو يضغط أقسام تصحيح DWARF ويعيد تسمية التصحيح
لتبدأ أسماء الأقسام .zdebug بدلا من .تصحيح. - ضغط-تصحيح-المقاطع = زليب
و - ضغط-تصحيح-المقاطع = زليب-جابي ضغط أقسام تصحيح DWARF بامتداد
SHF_COMPRESSED من ELF ABI. يختلف السلوك الافتراضي وفقًا لملف
الهدف المتضمن وخيارات التكوين المستخدمة لبناء سلسلة الأدوات. الافتراضي
يمكن تحديده من خلال فحص الإخراج من الرابط --مساعدة الخيار.
- تقليل - الذاكرة - النفقات العامة
يقلل هذا الخيار من متطلبات الذاكرة في وقت التشغيل ، على حساب الارتباط
سرعة. تم تقديم هذا لتحديد خوارزمية O (n ^ 2) القديمة لملف خريطة الارتباط
الجيل الجديد ، بدلاً من خوارزمية O (n) الجديدة التي تستخدم حوالي 40٪ من الذاكرة لـ
تخزين الرموز.
تأثير آخر للمحول هو تعيين حجم جدول التجزئة الافتراضي على 1021 ، والذي
مرة أخرى يحفظ الذاكرة بتكلفة إطالة وقت تشغيل الرابط. لم يتم ذلك
ولكن إذا كان - حجم الهاش تم استخدام التبديل.
لقد عادوا - تقليل - الذاكرة - النفقات العامة يمكن أيضًا استخدام رمز التبديل لتمكين المفاضلات الأخرى في
الإصدارات المستقبلية من الرابط.
- معرف البناء
- معرف البناء =نمط
طلب إنشاء ".note.gnu.build-id" قسم ملاحظات ELF أو ".buildid" COFF
الجزء. محتويات الملاحظة عبارة عن وحدات بت فريدة تحدد هذا الملف المرتبط.
نمط يمكن أن يكون "uuid" لاستخدام 128 بت عشوائي ، "sha1" لاستخدام تجزئة SHA160 1 بت على
الأجزاء المعيارية لمحتويات الإخراج ، "md5" لاستخدام تجزئة MD128 5 بت على ملف
الأجزاء المعيارية لمحتويات الإخراج ، أو "0xالسداسية لاستخدام سلسلة البت المختارة
تم تحديده كرقم زوجي للأرقام السداسية العشرية ("-" و ":" أحرف بين
يتم تجاهل أزواج الأرقام). لو نمط تم حذفه ، يتم استخدام "sha1".
ينتج الأنماط "md5" و "sha1" معرفًا يكون دائمًا هو نفسه في ملف
ملف الإخراج متطابق ، ولكنه سيكون فريدًا بين جميع ملفات الإخراج غير المتطابقة. إنها
لا يقصد مقارنتها كمجموع اختباري لمحتويات الملف. قد يكون الملف المرتبط
يمكن تغييرها لاحقًا بواسطة أدوات أخرى ، لكن سلسلة بت معرف البناء تحدد الأصل
الملف المرتبط لا يتغير.
تمرير "لا شيء" من أجل نمط لتعطيل الإعداد من أي خيارات "--build-id" في وقت سابق
سطر الأوامر.
يدعم رابط i386 PE ملفات -مشاركة الخيار ، والذي يتسبب في أن يكون الناتج ملف
مكتبة مرتبطة ديناميكيًا (DLL) بدلاً من ملف قابل للتنفيذ عادي. يجب عليك تسمية
إخراج "* .dll" عند استخدام هذا الخيار. بالإضافة إلى ذلك ، يدعم الرابط بشكل كامل ملفات
ملفات "* .def" القياسية ، والتي يمكن تحديدها في سطر أوامر الرابط مثل الكائن
ملف (في الواقع ، يجب أن يسبق الأرشيفات التي يصدر الرموز منها ، لضمان حصولهم على
مرتبط ، تمامًا مثل ملف الكائن العادي).
بالإضافة إلى الخيارات المشتركة لجميع الأهداف ، يدعم رابط i386 PE المزيد
خيارات سطر الأوامر الخاصة بهدف i386 PE. خيارات تأخذ القيم
يمكن فصلها عن قيمها إما بمسافة أو بعلامة يساوي.
--add-stdcall-alias
في حالة وجود رموز لها لاحقة stdcall (@nn) كما هي وأيضًا بالملف
جردت لاحقة. [هذا الخيار خاص بالمنفذ المستهدف i386 PE للرابط]
- ملف أساسي ملف
استعمل ملف كاسم لملف يتم فيه حفظ العناوين الأساسية لجميع ملفات
عمليات النقل اللازمة لإنشاء ملفات DLL ذات الامتداد dlltool. [هذا هو i386 PE محددة
اختيار]
--dll
قم بإنشاء ملف DLL بدلاً من ملف قابل للتنفيذ عادي. يمكنك أيضًا استخدام ملفات -مشاركة أو حدد أ
"LIBRARY" في ملف ".def" محدد. [هذا الخيار خاص بـ i386 PE المستهدف
ميناء الرابط]
- تمكين - قسم طويل - أسماء
--تعطيل - قسم طويل - أسماء
تضيف متغيرات PE لتنسيق كائن COFF امتدادًا يسمح باستخدام
أسماء المقاطع التي تزيد عن ثمانية أحرف ، وهو الحد العادي لـ COFF. بشكل افتراضي،
لا يُسمح بهذه الأسماء إلا في ملفات الكائنات ، حيث لا تسمح الصور القابلة للتنفيذ المرتبطة بالكامل
حمل جدول سلسلة COFF المطلوب لدعم الأسماء الأطول. كامتداد جنو ،
من الممكن السماح باستخدامها في الصور القابلة للتنفيذ أيضًا ، أو (على الأرجح
دون جدوى!) عدم السماح به في ملفات الكائنات ، باستخدام هذين الخيارين. تنفيذ
الصور التي تم إنشاؤها باستخدام أسماء الأقسام الطويلة هذه غير قياسية إلى حد ما ، وتحمل كـ
يقومون بعمل جدول سلسلة ، وقد يولدون مخرجات مربكة عند فحصهم مع غير جنو
أدوات مدركة لـ PE ، مثل عارضات الملفات وناقلات التحميل. ومع ذلك ، يعتمد GDB على استخدام
أسماء المقاطع الطويلة PE للعثور على أقسام معلومات تصحيح أخطاء Dwarf-2 في ملف تنفيذي
الصورة في وقت التشغيل ، وبالتالي إذا لم يتم تحديد أي من الخيارين في سطر الأوامر ، ld سوف
تمكين أسماء المقاطع الطويلة ، وتجاوز السلوك الافتراضي والصحيح تقنيًا ،
عندما يكتشف وجود معلومات تصحيح الأخطاء أثناء ربط صورة قابلة للتنفيذ و
لا تجريد الرموز. [هذا الخيار صالح لجميع منافذ PE المستهدفة للرابط]
--enable-stdcall-fixup
--تعطيل-stdcall-fixup
إذا وجد الرابط رمزًا لا يمكنه حله ، فسيحاول القيام بـ "fuzzy
linking "من خلال البحث عن رمز آخر محدد يختلف فقط في تنسيق
اسم الرمز (cdecl vs stdcall) وسيحل هذا الرمز عن طريق الارتباط بالمباراة.
على سبيل المثال ، قد يكون الرمز غير المعرّف "_foo" مرتبطًا بالوظيفة "_foo @ 12" ، أو
قد يكون الرمز غير المعرّف "_bar @ 16" مرتبطًا بالوظيفة "_bar". عندما
يقوم linker بهذا ، ويطبع تحذيرًا ، لأنه عادةً ما يفشل في الارتباط ،
ولكن في بعض الأحيان قد تحتاج استيراد المكتبات التي تم إنشاؤها من ملفات dll لجهات خارجية إلى هذه الميزة
لتكون قابلة للاستخدام. إذا حددت --enable-stdcall-fixup، هذه الميزة ممكّنة بالكامل
ولا تتم طباعة التحذيرات. إذا حددت --تعطيل-stdcall-fixup، هذه الميزة
معطل ، وتعتبر حالات عدم التطابق هذه من الأخطاء. [هذا الخيار خاص بـ
المنفذ المستهدف i386 PE للرابط]
- قيادة تسطير
- لا تؤدي إلى تسطير أسفل السطر
بالنسبة لمعظم الأهداف ، تكون بادئة الرمز الافتراضية هي شرطة سفلية ويتم تعريفها في الهدف
وصف. من خلال هذا الخيار ، من الممكن تعطيل / تمكين الشرطة السفلية الافتراضية
بادئة الرمز.
- تصدير جميع الرموز
إذا تم توفيرها ، فسيتم تصدير جميع الرموز العامة في الكائنات المستخدمة لإنشاء DLL بواسطة
DLL. لاحظ أن هذا هو الإعداد الافتراضي إذا لم يكن هناك أي تصدير بخلاف ذلك
حرف او رمز. عندما يتم تصدير الرموز صراحةً عبر ملفات DEF أو تصديرها ضمنيًا
عبر سمات الوظيفة ، الافتراضي هو عدم تصدير أي شيء آخر ما لم يكن هذا الخيار
معطى. لاحظ أن الرموز "DllMain @ 12" ، "DllEntryPoint @ 0" ،
لن يتم تصدير "DllMainCRTStartup @ 12" و "impure_ptr" تلقائيًا. أيضا،
الرموز التي تم استيرادها من مكتبات DLL الأخرى لن يتم إعادة تصديرها ، ولن يتم تحديد الرموز
تخطيط DLL الداخلي مثل تلك التي تبدأ بـ "_head_" أو تنتهي بـ
"_أنا اسم". بالإضافة إلى ذلك ، لا توجد رموز من "libgcc" أو "libstd ++" أو "libmingw32" أو
سيتم تصدير "crtX.o". الرموز التي تبدأ أسماؤها بـ "__rtti_" أو "__builtin_"
لن يتم تصديرها ، للمساعدة في مكتبات DLL C ++. أخيرًا ، هناك قائمة طويلة من
رموز cygwin-private التي لم يتم تصديرها (من الواضح أن هذا ينطبق عند البناء
DLL لأهداف cygwin). استثناءات cygwin هي: "_cygwin_dll_entry @ 12"،
"_cygwin_crt0_common @ 8"، "_cygwin_noncygwin_dll_entry @ 12"، "_fmode"، "_impure_ptr"،
"cygwin_attach_dll" ، "cygwin_premain0" ، "cygwin_premain1" ، "cygwin_premain2" ،
"cygwin_premain3" و "البيئة". [هذا الخيار خاص بـ i386 PE المستهدف
ميناء الرابط]
- استبعاد الرموز رمز,رمز، ...
تحدد قائمة الرموز التي لا ينبغي تصديرها تلقائيًا. الرمز
يمكن تحديد الأسماء بفاصلات أو نقطتين. [هذا الخيار خاص بـ i386 PE
المنفذ المستهدف للرابط]
- استبعاد جميع الرموز
يحدد عدم وجوب تصدير الرموز تلقائيًا. [هذا الخيار خاص بـ
المنفذ المستهدف i386 PE للرابط]
--محاذاة الملف
حدد محاذاة الملف. ستبدأ الأقسام في الملف دائمًا عند إزاحة الملف
وهي مضاعفات هذا الرقم. هذا الخيار الافتراضي هو 512. [هذا الخيار محدد
إلى المنفذ المستهدف i386 PE للرابط]
--كومة حجز
--كومة حجز,ارتكاب
حدد عدد وحدات البايت من الذاكرة المراد حجزها (والالتزام اختياريًا) لاستخدامها على أنها
كومة لهذا البرنامج. الافتراضي هو 1 ميغا بايت محجوز ، 4K ملتزم. [هذا الخيار
خاص بالمنفذ المستهدف i386 PE للرابط]
- قاعدة الصورة قيمنا
استعمل قيمنا كعنوان أساسي لبرنامجك أو dll. هذه هي أدنى ذاكرة
الموقع الذي سيتم استخدامه عند تحميل البرنامج أو dll. لتقليل الحاجة إلى
قم بنقل ملفات dll وتحسين أدائها ، يجب أن يكون لكل منها عنوان أساسي فريد
ولا تتداخل مع أي ملفات dll أخرى. الافتراضي هو 0x400000 للملفات التنفيذية ، و
0x10000000 لـ dlls. [هذا الخيار خاص بالمنفذ المستهدف i386 PE الخاص بـ
رابط]
- قتل في
إذا تم توفير لاحقات stdcall (@nn) من الرموز قبل أن يتم
تصدير. [هذا الخيار خاص بالمنفذ المستهدف i386 PE للرابط]
- كبير العنوان علم
إذا أعطيت ، يتم تعيين البت المناسب في حقل "الخصائص" لرأس COFF
للإشارة إلى أن هذا الملف القابل للتنفيذ يدعم عناوين افتراضية أكبر من 2 غيغابايت.
يجب استخدام هذا بالاقتران مع / 3GB أو / USERVA =قيمنا ميغا بايت بالتبديل
قسم "[أنظمة التشغيل]" من BOOT.INI. خلاف ذلك ، هذا الشيء ليس له تأثير.
[هذا الخيار خاص بمنافذ PE المستهدفة للرابط]
--تعطيل - كبير - عنوان مدرك
يعكس تأثير السابق - كبير العنوان علم اختيار. هذا مفيد إذا
- كبير العنوان علم يتم ضبطه دائمًا بواسطة برنامج تشغيل المترجم (مثل Cygwin gcc) و
لا يدعم الملف القابل للتنفيذ عناوين افتراضية أكبر من 2 غيغابايت. [هذا الخيار
خاص بمنافذ PE المستهدفة للرابط]
- نسخة رئيسية صورة قيمنا
يعيّن الرقم الرئيسي لـ "إصدار الصورة". افتراضات إلى 1. [هذا الخيار هو
خاص بالمنفذ المستهدف i386 PE للرابط]
--الرئيسية نظام التشغيل الإصدار قيمنا
يعيّن الرقم الرئيسي لـ "إصدار نظام التشغيل". افتراضيات إلى 4. [هذا الخيار محدد
إلى المنفذ المستهدف i386 PE للرابط]
--الرئيسية-إصدار النظام الفرعي قيمنا
يعيّن الرقم الرئيسي لـ "إصدار النظام الفرعي". افتراضات إلى 4. [هذا الخيار هو
خاص بالمنفذ المستهدف i386 PE للرابط]
- نسخة مصغرة للصورة قيمنا
يضبط الرقم الثانوي لـ "إصدار الصورة". افتراضات إلى 0. [هذا الخيار هو
خاص بالمنفذ المستهدف i386 PE للرابط]
- إصدار نظام التشغيل الثانوي قيمنا
يعيّن الرقم الثانوي لـ "إصدار نظام التشغيل". افتراضات إلى 0. [هذا الخيار محدد
إلى المنفذ المستهدف i386 PE للرابط]
- إصدار النظام الفرعي الثانوي قيمنا
يضبط الرقم الثانوي "لإصدار النظام الفرعي". افتراضات إلى 0. [هذا الخيار هو
خاص بالمنفذ المستهدف i386 PE للرابط]
- إخراج ناقص ملف
سيقوم الرابط بإنشاء الملف ملف والذي سيحتوي على ملف DEF مطابق لـ
DLL الذي ينشئه الرابط. يمكن لملف DEF هذا (والذي يجب أن يسمى "* .def")
يمكن استخدامها لإنشاء مكتبة استيراد باستخدام "dlltool" أو يمكن استخدامها كمرجع إلى
الرموز المصدرة تلقائيًا أو ضمنيًا. [هذا الخيار خاص بـ i386 PE
المنفذ المستهدف للرابط]
- من بين الضمانات ملف
سيقوم الرابط بإنشاء الملف ملف الذي سيحتوي على lib استيراد مطابق لـ
DLL الذي ينشئه الرابط. ملف الاستيراد هذا (والذي يجب تسميته "* .dll.a" أو
يمكن استخدام "* .a" لربط العملاء بمكتبة DLL التي تم إنشاؤها ؛ هذا السلوك يجعلها
من الممكن تخطي خطوة إنشاء مكتبة استيراد منفصلة "dlltool". [هذا الخيار
خاص بالمنفذ المستهدف i386 PE للرابط]
- تمكين قاعدة الصورة التلقائية
- تمكين قاعدة الصورة التلقائية =قيمنا
اختر تلقائيًا قاعدة الصورة لملفات DLL ، وابدأ بالقاعدة اختياريًا قيمنا,
ما لم يتم تحديد أحد باستخدام الوسيطة "--image-base". باستخدام تجزئة تم إنشاؤها
من dllname لإنشاء قواعد صور فريدة لكل DLL ، تصادمات في الذاكرة و
يتم تجنب عمليات النقل التي يمكن أن تؤخر تنفيذ البرنامج. [هذا الخيار محدد
إلى المنفذ المستهدف i386 PE للرابط]
- تعطيل-السيارات-قاعدة الصورة
لا تنشئ تلقائيًا قاعدة صور فريدة. إذا لم يكن هناك محدد من قبل المستخدم
image base ("--image-base") ثم استخدم النظام الأساسي الافتراضي. [هذا الخيار محدد
إلى المنفذ المستهدف i386 PE للرابط]
--dll-search-prefix سلسلة
عند الارتباط ديناميكيًا بـ dll بدون مكتبة استيراد ، ابحث عن
" .dll "في التفضيل على" lib .dll ". هذا السلوك يسمح
تمييز سهل بين مكتبات DLL المصممة لمختلف "الأنظمة الفرعية": أصلي ، cygwin ،
uwin ، pw ، إلخ. على سبيل المثال ، تستخدم مكتبات DLL الخاصة بـ cygwin عادةً "--dll-search-prefix = cyg".
[هذا الخيار خاص بالمنفذ المستهدف i386 PE للرابط]
- تمكين الاستيراد التلقائي
قم بربط معقد لـ "_symbol" بـ "__imp__symbol" لواردات البيانات من مكتبات DLL ،
وأنشئ الرموز الرنانة الضرورية عند إنشاء مكتبات الاستيراد باستخدام
تلك الصادرات البيانات. ملاحظة: سيؤدي استخدام ملحق "الاستيراد التلقائي" إلى ظهور النص
قسم من ملف الصورة ليكون قابلاً للكتابة. هذا لا يتوافق مع PE-COFF
مواصفات التنسيق التي نشرتها Microsoft.
ملاحظة - سيؤدي استخدام امتداد "الاستيراد التلقائي" أيضًا إلى قراءة البيانات فقط التي قد تؤدي إلى ذلك
عادةً ما يتم وضعها في قسم .rdata ليتم وضعها في قسم البيانات
في حين أن. هذا من أجل التغلب على مشكلة الثوابت الموضحة
، هنا: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
بشكل عام ، فإن استخدام "الاستيراد التلقائي" "يعمل فقط" - ولكن في بعض الأحيان قد ترى هذا
رسالة:
لا يمكن استيراد "المتغير" تلقائيًا. الرجاء قراءة وثائق ld's
"--enable-auto-import" للحصول على التفاصيل. "
تحدث هذه الرسالة عندما يصل بعض التعبيرات (الفرعية) إلى عنوان تم توفيره في النهاية بواسطة
مجموع ثابتين (تسمح جداول استيراد Win32 بواحد فقط). أمثلة حيث هذا
قد تحدث بما في ذلك الوصول إلى حقول الأعضاء في متغيرات البنية المستوردة من مكتبة الارتباط الحيوي (DLL) ،
وكذلك استخدام فهرس ثابت في متغير صفيف مستورد من DLL. أي
قد يؤدي المتغير متعدد الكلمات (المصفوفات ، البنيات ، الطويلة ، إلخ) إلى تشغيل حالة الخطأ هذه.
ومع ذلك ، بغض النظر عن نوع البيانات الدقيق للمتغير المُصدَّر المخالف ، فإن ld سوف
اكتشفه دائمًا ، وأصدر التحذير ، ثم اخرج.
توجد عدة طرق لمعالجة هذه الصعوبة ، بغض النظر عن نوع بيانات ملف
المتغير المصدر:
تتمثل إحدى الطرق في استخدام مفتاح -enable-runtime-pseudo-reloc. هذا يترك مهمة
تعديل المراجع في كود العميل الخاص بك لبيئة وقت التشغيل ، لذلك تعمل هذه الطريقة
فقط عندما تدعم بيئة وقت التشغيل هذه الميزة.
الحل الثاني هو إجبار أحد "الثوابت" على أن يكون متغيرًا - أي ،
غير معروف وغير قابل للتحسين في وقت الترجمة. بالنسبة للمصفوفات ، هناك احتمالان:
أ) اجعل الفهرس (عنوان المصفوفة) متغيرًا ، أو ب) اجعل الفهرس "الثابت"
متغير. هكذا:
نوع خارجي extern_array [] ؛
extern_array [1] ->
{النوع المتطاير * t = extern_array ؛ ر [1]}
or
نوع خارجي extern_array [] ؛
extern_array [1] ->
{متطاير int t = 1 ؛ extern_array [t]}
بالنسبة للبنيات (ومعظم أنواع البيانات المتعددة الكلمات الأخرى) ، فإن الخيار الوحيد هو إنشاء ملف
الهيكل نفسه (أو الطويل ، أو ...) المتغير:
الهيكل الخارجي s extern_struct ؛
extern_struct.field ->
{متغير البنية s * t = & extern_struct؛ t-> حقل}
or
extern_ll طويل طويل خارجي ؛
extern_ll ->
{متطاير طويل * local_ll = & extern_ll؛ * local_ll}
تتمثل الطريقة الثالثة للتعامل مع هذه الصعوبة في التخلي عن "الاستيراد التلقائي" لـ
الرمز المخالف ووضع علامة عليه بـ "__declspec (dllimport)". ومع ذلك ، في الممارسة العملية
يتطلب استخدام #defines وقت الترجمة للإشارة إلى ما إذا كنت تقوم ببناء DLL ،
بناء رمز العميل الذي سيرتبط بملف DLL ، أو مجرد إنشاء / ربط بملف ثابت
مكتبة. في الاختيار بين الطرق المختلفة لحل "المباشر
معالجة مع مشكلة الإزاحة الثابتة ، يجب أن تفكر في الاستخدام المعتاد في العالم الحقيقي:
الأصل:
- foo.h
خارجي int arr [] ؛
--foo.c
# تضمين "foo.h"
void main (int argc، char ** argv) {
printf ("٪ d \ n"، arr [1]) ؛
}
1 الحل:
- foo.h
خارجي int arr [] ؛
--foo.c
# تضمين "foo.h"
void main (int argc، char ** argv) {
/ * هذا الحل هو من أجل win32 و cygwin؛ لا تقم "بالتحسين" * /
متقلبة int * parr = arr ؛
printf ("٪ d \ n"، parr [1]) ؛
}
2 الحل:
- foo.h
/ * ملاحظة: التصدير التلقائي مفترض (لا __declspec (dllexport)) * /
#if (مُعرَّفة (_WIN32) || مُعرَّفة (__ CYGWIN__)) && \
! (المعرفة (FOO_BUILD_DLL) || المعرفة (FOO_STATIC))
#define FOO_IMPORT __declspec (dllimport)
#else
#تعريف FOO_IMPORT
#endif
خارجي FOO_IMPORT int arr [] ؛
--foo.c
# تضمين "foo.h"
void main (int argc، char ** argv) {
printf ("٪ d \ n"، arr [1]) ؛
}
الطريقة الرابعة لتجنب هذه المشكلة هي إعادة ترميز مكتبتك لاستخدام ملف
واجهة بدلاً من واجهة بيانات للمتغيرات المخالفة (على سبيل المثال set_foo () و
get_foo () وظائف الموصل). [هذا الخيار خاص بالمنفذ المستهدف i386 PE
من الرابط]
- تعطيل استيراد السيارات
لا تحاول إجراء ربط معقد لـ "_symbol" بـ "__imp__symbol" من أجل DATA
الواردات من مكتبات DLL. [هذا الخيار خاص بالمنفذ المستهدف i386 PE الخاص بـ
رابط]
- تمكين-وقت التشغيل-نقل زائفة
إذا كانت التعليمات البرمجية الخاصة بك تحتوي على تعبيرات موصوفة في قسم - تمكين الاستيراد التلقائي ، أي ،
تستورد البيانات من DLL مع إزاحة غير صفرية ، سيُنشئ رمز التبديل هذا متجهًا لـ
"عمليات النقل الزائفة لوقت التشغيل" والتي يمكن استخدامها بواسطة بيئة وقت التشغيل لضبطها
الإشارات إلى هذه البيانات في رمز العميل الخاص بك. [هذا الخيار خاص بـ i386 PE
المنفذ المستهدف للرابط]
--تعطيل-وقت التشغيل- pseudo-reloc
لا تقم بإنشاء عمليات نقل زائفة لاستيراد بيانات إزاحة غير صفرية من مكتبات DLL. [هذه
الخيار خاص بالمنفذ المستهدف i386 PE للرابط]
- تمكين اضافية pe التصحيح
إظهار معلومات تصحيح الأخطاء الإضافية ذات الصلة بظهور رمز الاستيراد التلقائي. [هذا الخيار
خاص بالمنفذ المستهدف i386 PE للرابط]
- محاذاة القسم
يضبط محاذاة القسم. ستبدأ أقسام الذاكرة دائمًا بالعناوين التي
هي من مضاعفات هذا الرقم. افتراضات إلى 0x1000. [هذا الخيار خاص بـ
المنفذ المستهدف i386 PE للرابط]
--كومة حجز
--كومة حجز,ارتكاب
حدد عدد وحدات البايت من الذاكرة المراد حجزها (والالتزام اختياريًا) لاستخدامها على أنها
كومة لهذا البرنامج. الافتراضي هو 2 ميغا بايت محجوز ، 4K ملتزم. [هذا الخيار
خاص بالمنفذ المستهدف i386 PE للرابط]
--النظام الفرعي التي
--النظام الفرعي التي:رائد
--النظام الفرعي التي:رائد.قاصر
يحدد النظام الفرعي الذي سيتم تنفيذ برنامجك بموجبه. القيم القانونية ل
التي هي "أصلية" و "windows" و "وحدة التحكم" و "posix" و "xbox". يمكنك اختياريا
إصدار النظام الفرعي أيضًا. يتم أيضًا قبول القيم الرقمية لـ التي. [هذا الخيار
خاص بالمنفذ المستهدف i386 PE للرابط]
تقوم الخيارات التالية بتعيين العلامات في الحقل "خصائص Dll" لملف PE
header: [هذه الخيارات خاصة بمنافذ PE المستهدفة للرابط]
- إنتروبيا عالية
تتوافق الصورة مع التوزيع العشوائي لتخطيط مساحة العنوان 64 بت (ASLR).
- قاعدة ديناميكية
قد يتم تغيير موقع عنوان قاعدة الصورة باستخدام التوزيع العشوائي لتخطيط مساحة العنوان
(ASLR). تم تقديم هذه الميزة مع MS Windows Vista لأهداف i386 PE.
- forceinteg
يتم فرض عمليات التحقق من سلامة الكود.
--nxcompat
الصورة متوافقة مع Data Execution Prevention. كانت هذه الميزة
تم تقديمه مع MS Windows XP SP2 لأهداف i386 PE.
- لا العزلة
بالرغم من أن الصورة تفهم العزل ، لا تقم بعزل الصورة.
- لا سيه
الصورة لا تستخدم SEH. لا يجوز استدعاء أي معالج SE من هذه الصورة.
- لا ربط
لا تربط هذه الصورة.
--wdmdriver
يستخدم برنامج التشغيل MS Windows Driver Model.
- توعية
الصورة تدرك Terminal Server.
- أدخل الطابع الزمني
--لا إدراج-الطابع الزمني
أدخل طابعًا زمنيًا حقيقيًا في الصورة. هذا هو السلوك الافتراضي كما هو متطابق
رمز قديم وهذا يعني أن الصورة ستعمل مع أدوات أخرى مملوكة ملكية. ال
المشكلة مع هذا الإعداد الافتراضي هو أنه سينتج عنه صور مختلفة قليلاً
تنتج في كل مرة يتم فيها ربط نفس المصادر. الخيار --لا إدراج-الطابع الزمني يمكن
تُستخدم لإدخال قيمة صفرية للطابع الزمني ، مما يضمن إنتاج الثنائيات
من مصادر متطابقة ستقارن بشكل مماثل.
يستخدم هدف C6X uClinux تنسيقًا ثنائيًا يسمى DSBT لدعم المكتبات المشتركة. كل
تحتاج المكتبة المشتركة في النظام إلى فهرس فريد ؛ تستخدم جميع الملفات التنفيذية فهرس
0.
- حجم dsbt المقاس
يعيّن هذا الخيار عدد الإدخالات في DSBT للملف التنفيذي الحالي أو المشترك
مكتبة ل المقاس. الإعداد الافتراضي هو إنشاء جدول يحتوي على 64 إدخالاً.
- dsbt- الفهرس مؤشر
يضبط هذا الخيار فهرس DSBT للمكتبة التنفيذية أو المشتركة الحالية على مؤشر.
الافتراضي هو 0 ، وهو مناسب لتوليد الملفات التنفيذية. إذا كانت مشتركة
يتم إنشاء مكتبة باستخدام فهرس DSBT بقيمة 0 ، فإن عمليات إعادة الترجيح "R_C6000_DSBT_INDEX" هي
نسخها في ملف الإخراج.
لقد عادوا --لا يوجد دمج-exidx- مداخل يؤدي التبديل إلى تعطيل دمج إدخالات exidx المجاورة في
معلومات الإطار الاسترخاء.
تدعم الوصلات 68HC11 و 68HC12 خيارات محددة للتحكم في بنك الذاكرة
تحويل رسم الخرائط وتوليد كود الترامبولين.
--لا الترامبولين
هذا الخيار يعطل توليد الترامبولين. افتراضيا الترامبولين هو
تم إنشاؤه لكل دالة بعيدة تسمى باستخدام تعليمة "jsr" (هذا
يحدث عندما يتم أخذ مؤشر إلى وظيفة بعيدة).
- نافذة البنك الاسم
يشير هذا الخيار للرابط إلى اسم منطقة الذاكرة في ملف الذاكرة
المواصفات التي تصف نافذة بنك الذاكرة. تعريف هذه المنطقة هو
ثم يستخدمه الرابط لحساب الترحيل والعناوين داخل نافذة الذاكرة.
يتم دعم الخيارات التالية للتحكم في معالجة إنشاء GOT عند الارتباط بـ
68 ألف هدف.
- حصلت =نوع
يخبر هذا الخيار الرابط الذي يستخدمه مخطط توليد GOT. نوع يجب أن تكون واحدة
of عزباء, سلبي, مولتيغوت or الهدف. لمزيد من المعلومات راجع إدخال المعلومات
For ld.
يتم دعم الخيارات التالية للتحكم في إنشاء تعليمات microMIPS عندما
ربط لأهداف MIPS.
--insn32
- لا insn32
تتحكم هذه الخيارات في اختيار تعليمات microMIPS المستخدمة في التعليمات البرمجية التي تم إنشاؤها بواسطة
الرابط ، مثل ذلك الموجود في PLT أو بذرة الربط البطيئة ، أو في حالة الارتخاء. لو
--insn32 يستخدم ، ثم يستخدم الرابط فقط ترميز تعليمات 32 بت. بشكل افتراضي
أو إذا - لا insn32 يتم استخدام جميع ترميزات التعليمات ، بما في ذلك 16 بت
حيثما كان ذلك ممكنا.
البيئة
يمكنك تغيير سلوك ld مع متغيرات البيئة "GNUTARGET" ،
"LDEMULATION" و "COLLECT_NO_DEMANGLE".
يحدد "GNUTARGET" تنسيق كائن ملف الإدخال إذا لم تستخدمه -b (أو مرادفه
--صيغة). يجب أن تكون قيمتها أحد أسماء BFD لتنسيق الإدخال. إذا لم يكن هناك
"GNUTARGET" في البيئة ، ld يستخدم التنسيق الطبيعي للهدف. إذا كان "GNUTARGET"
تم تعيينه على "افتراضي" ثم يحاول BFD اكتشاف تنسيق الإدخال عن طريق فحص الملف الثنائي
ملفات الإدخال غالبًا ما تنجح هذه الطريقة ، ولكن هناك بعض الغموض المحتمل منذ ذلك الحين
ليست طريقة للتأكد من أن الرقم السحري المستخدم لتحديد تنسيقات ملف الكائن هو
فريدة من نوعها. ومع ذلك ، فإن إجراء التكوين لـ BFD على كل نظام يضع ملف
التنسيق التقليدي لهذا النظام أولاً في قائمة البحث ، لذلك يتم حل الغموض
لصالح الاتفاقية.
تحدد "LDEMULATION" المحاكاة الافتراضية إذا لم تستخدم ملف -m اختيار. ال
يمكن أن تؤثر المحاكاة على جوانب مختلفة من سلوك الرابط ، لا سيما الرابط الافتراضي
النصي. يمكنك سرد المحاكاة المتاحة بامتداد - الإسراف or -V والخيارات. إذا كان
-m لم يتم استخدام الخيار ، ولم يتم تعريف متغير البيئة "LDEMULATION" ، و
تعتمد المحاكاة الافتراضية على كيفية تكوين الرابط.
عادةً ، سيتحول الرابط افتراضيًا إلى رموز فك التشابك. ومع ذلك، إذا
تم تعيين "COLLECT_NO_DEMANGLE" في البيئة ، ثم سيتم افتراضيًا عدم فك التشابك
حرف او رمز. يتم استخدام متغير البيئة هذا بطريقة مماثلة بواسطة رابط "gcc"
برنامج المجمع. قد يتم تجاوز القيمة الافتراضية بواسطة - تفكيك و --لا ديانجلي
خيارات.
استخدم alpha-linux-gnu-ld.bfd عبر الإنترنت باستخدام خدمات onworks.net