عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

h8300-hitachi-coff-ld - عبر الإنترنت في السحابة

قم بتشغيل h8300-hitachi-coff-ld في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر h8300-hitachi-coff-ld الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


ld - استخدام LD، رابط GNU

موجز


لد [الخيارات] objfile

الوصف


ld يجمع بين عدد من ملفات الكائنات والأرشيف ، وينقل بياناتهم ويربط الرمز
المراجع. عادةً ما تكون الخطوة الأخيرة في تجميع البرنامج هي التشغيل ld.

ld يقبل ملفات Linker Command Language المكتوبة في مجموعة شاملة من AT & T's Link Editor
بناء جملة لغة الأمر ، لتوفير تحكم واضح وكامل في عملية الربط.

لا تصف صفحة الدليل هذه لغة الأمر ؛ انظر ال ld الدخول في "المعلومات" أو
دليل ld: رابط GNU، للحصول على تفاصيل كاملة عن لغة الأوامر والجوانب الأخرى
رابط جنو.

هذا الإصدار من 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 خيار لاستبدال النص الافتراضي للرابط بالكامل.

بالنسبة للخيارات التي تكون أسماؤها حرفًا واحدًا ، يجب أن تتبع وسيطات الخيار إما
حرف خيار بدون مسافة بيضاء متداخلة ، أو يتم تقديمه كوسيطات منفصلة
فورًا بعد الخيار الذي يتطلبها.

بالنسبة للخيارات التي تكون أسماؤها متعددة الأحرف ، يمكن أن تسبق شَرطة واحدة أو اثنتان
اسم الخيار على سبيل المثال، -رمز التتبع و - رمز التتبع متكافئة. ملاحظة - هناك
هو استثناء واحد لهذه القاعدة. خيارات متعددة للأحرف تبدأ بحرف صغير "o"
لا يمكن أن يسبقه إلا شرطتان. هذا لتقليل الارتباك مع -o اختيار. وبالتالي
مثلا -وماجيك يعيّن اسم ملف الإخراج إلى سحر في حين --أوماجيك يحدد NMAGIC
علم على الإخراج.

يجب فصل وسائط الخيارات متعددة الأحرف عن اسم الخيار بامتداد
يساوي التوقيع ، أو يتم إعطاؤه كوسيطات منفصلة بعد الخيار الذي
يتطلب منهم. على سبيل المثال، - رمز التتبع فو و - رمز التتبع = foo متكافئة.
يتم قبول الاختصارات الفريدة لأسماء الخيارات متعددة الأحرف.

ملاحظة --- إذا تم استدعاء الرابط بشكل غير مباشر ، عبر برنامج تشغيل مترجم (على سبيل المثال دول مجلس التعاون الخليجي) ثم
يجب أن تكون مسبوقة بجميع خيارات سطر أوامر الرابط -Wl ، (أو ما هو مناسب
لبرنامج التحويل البرمجي المعين) مثل هذا:

gcc -Wl، - startgroup foo.o bar.o -Wl، - endgroup

هذا مهم ، لأنه بخلاف ذلك ، قد يقوم برنامج تشغيل المترجم بإسقاط ملف
خيارات رابط ، مما أدى إلى ارتباط غير صالح.

فيما يلي جدول بمفاتيح تبديل سطر الأوامر العامة المقبولة بواسطة رابط GNU:

-aالكلمة
هذا الخيار مدعوم للتوافق مع HP / UX. ال الكلمة يجب أن تكون الحجة واحدة من
الخيوط أرشيف, شاركت الطرق أو الافتراضي. - ارشيفي يعادل وظيفيًا
- ثابت، والكلمتان الرئيسيتان الأخريان مكافئة وظيفيًا لـ -ديناميكية. هذا
يمكن استخدام الخيار أي عدد من المرات.

-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" له الامتداد
نفس التأثير.

-e دخول
- دخول =دخول
استعمل دخول كرمز صريح لبدء تنفيذ برنامجك ، بدلاً من
نقطة الدخول الافتراضية. إذا لم يكن هناك رمز مسمى دخول، سيحاول الرابط
تحليل دخول كرقم ، واستخدمه كعنوان الإدخال (سيكون الرقم
مفسرة في الأساس 10 ؛ يمكنك استخدام الرائدة 0x للقاعدة 16 ، أو بادئة 0 للقاعدة
8).

--استثني الليبس ليب,ليب، ...
يحدد قائمة مكتبات الأرشيف التي لا يجب أن تكون الرموز منها تلقائيًا
تصدير. يمكن تحديد أسماء المكتبات بفاصلات أو نقطتين. التحديد
يستبعد "--exclude-libs ALL" الرموز الموجودة في جميع مكتبات الأرشيف من التصدير التلقائي.
هذا الخيار متاح فقط للمنفذ المستهدف i386 PE للرابط و ELF
الموانئ المستهدفة. بالنسبة لـ i386 PE ، لا تزال الرموز المدرجة صراحةً في ملف .def
المصدرة ، بغض النظر عن هذا الخيار. بالنسبة لمنافذ ELF المستهدفة ، تتأثر الرموز بهذا
سيتم التعامل مع الخيار على أنه مخفي.

-E
- ديناميكية التصدير
عند إنشاء ملف تنفيذي مرتبط ديناميكيًا ، أضف جميع الرموز إلى الرمز الديناميكي
طاولة. جدول الرموز الديناميكي هو مجموعة الرموز المرئية من الديناميكي
كائنات في وقت التشغيل.

إذا لم تستخدم هذا الخيار ، فعادة ما يحتوي جدول الرموز الديناميكية فقط
تلك الرموز التي يتم الإشارة إليها بواسطة كائن ديناميكي مذكور في الرابط.

إذا كنت تستخدم "dlopen" لتحميل كائن ديناميكي يحتاج إلى الرجوع إلى الرموز
التي يحددها البرنامج ، بدلاً من كائن ديناميكي آخر ، فمن المحتمل أن تفعل ذلك
تحتاج إلى استخدام هذا الخيار عند ربط البرنامج نفسه.

يمكنك أيضًا استخدام البرنامج النصي للإصدار للتحكم في الرموز التي يجب إضافتها إلى الملف
جدول الرموز الديناميكية إذا كان تنسيق الإخراج يدعمه. انظر وصف
- النسخة النصي في @ref{VERSION}.

-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 ECOFF الذي يدعم وضع ملفات
الأشياء الكبيرة والصغيرة إلى أقسام مختلفة. يتم تجاهل هذا لكائن آخر
تنسيقات الملفات.

-hالاسم
-Soname =الاسم
عند إنشاء كائن مشترك ELF ، قم بتعيين حقل DT_SONAME الداخلي إلى المحدد
اسم. عندما يكون الملف القابل للتنفيذ مرتبطًا بكائن مشترك به حقل DT_SONAME ،
ثم عند تشغيل الملف القابل للتنفيذ ، سيحاول الرابط الديناميكي تحميل الملف المشترك
كائن محدد بواسطة الحقل DT_SONAME بدلاً من استخدام اسم الملف المعطى لـ
الرابط.

-i قم بإجراء ارتباط تزايدي (مثل الخيار -r).

-فيه الاسم
عند إنشاء ELF قابل للتنفيذ أو كائن مشترك ، قم باستدعاء NAME عندما يكون الملف القابل للتنفيذ أو
يتم تحميل الكائن المشترك عن طريق ضبط DT_INIT على عنوان الوظيفة. بواسطة
افتراضيًا ، يستخدم الرابط "_init" كوظيفة للاتصال.

-lأرشيف
- المكتبة =أرشيف
إضافة ملف أرشيف أرشيف إلى قائمة الملفات المراد ربطها. يمكن استخدام هذا الخيار في أي
عدد الاوقات. ld سيبحث في قائمة المسارات الخاصة به عن تواجدات "libأرشيف.أ" For
كل أرشيف محدد.

على الأنظمة التي تدعم المكتبات المشتركة ، ld قد يبحث أيضًا عن المكتبات ذات
ملحقات أخرى غير ".a". على وجه التحديد، على أنظمة ELF وSunOS، ld سوف يبحث أ
دليل لمكتبة بامتداد ".so" قبل البحث عن مكتبة بامتداد ".so".
امتداد ".أ". وفقًا للاتفاقية، يشير الامتداد ".so" إلى مكتبة مشتركة.

سيبحث الرابط في أرشيف مرة واحدة فقط ، في المكان المحدد فيه
سطر الأوامر. إذا كان الأرشيف يحدد رمزًا لم يتم تحديده في كائن ما
الذي ظهر قبل الأرشيف في سطر الأوامر ، سيتضمن الرابط امتداد
الملف (الملفات) المناسبة من الأرشيف. ومع ذلك ، رمز غير محدد في كائن
الظهور لاحقًا في سطر الأوامر لن يتسبب في قيام الرابط بالبحث في الأرشيف
مرة أخرى.

رؤية -( خيار لطريقة إجبار الرابط على البحث في الأرشيفات عدة مرات.

يمكنك سرد نفس الأرشيف عدة مرات في سطر الأوامر.

يعتبر هذا النوع من البحث في الأرشيف معيارًا لروابط Unix. ومع ذلك ، إذا كنت
استخدام ld في AIX ، لاحظ أنه يختلف عن سلوك رابط AIX.

-Lالبحث
- مسار المكتبة =البحث
أضف المسار البحث إلى قائمة المسارات التي ld سيبحث عن مكتبات الأرشيف و
ld نصوص التحكم. يمكنك استخدام هذا الخيار أي عدد من المرات. الدلائل
تم البحث بالترتيب الذي تم تحديده به في سطر الأوامر. الدلائل
المحدد في سطر الأوامر يتم البحث عنها قبل الدلائل الافتراضية. الجميع -L
تنطبق الخيارات على الجميع -l بغض النظر عن الترتيب الذي تظهر به الخيارات.

If البحث يبدأ بـ "=" ، ثم سيتم استبدال "=" ب sysroot بادئةأو المعلم
المسار المحدد عند تكوين الرابط.

مجموعة المسارات الافتراضية التي تم البحث عنها (بدون تحديدها بامتداد -L) يعتمد على أي
وضع المحاكاة ld يستخدم ، وفي بعض الحالات أيضًا حول كيفية تكوينه.

يمكن أيضًا تحديد المسارات في نص ارتباط باستخدام الأمر "SEARCH_DIR".
يتم البحث في الدلائل المحددة بهذه الطريقة عند النقطة التي يتم فيها البحث في البرنامج النصي للرابط
يظهر في سطر الأوامر.

-mمحاكاة
محاكاة محاكاة رابط. يمكنك سرد المحاكاة المتاحة بامتداد
- الإسراف or -V خيارات.

إذا كان -m الخيار غير مستخدم ، المحاكاة مأخوذة من "LDEMULATION"
متغير البيئة ، إذا تم تحديد ذلك.

وبخلاف ذلك ، تعتمد المحاكاة الافتراضية على كيفية تكوين الرابط.

-M
- طباعة الخريطة
اطبع خريطة ارتباط إلى الإخراج القياسي. توفر خريطة الارتباط معلومات حول
بما في ذلك ما يلي:

* حيث يتم تعيين ملفات الكائنات والرموز في الذاكرة.

* كيف يتم تخصيص الرموز الشائعة.

* جميع أعضاء الأرشيف مشمولين بالرابط مع ذكر الرمز الذي
تسببت في إحضار عضو الأرشيف.

-n
--nmagic
قم بإيقاف تشغيل محاذاة الصفحة للأقسام ، وقم بتمييز الإخراج على أنه "NMAGIC" إن أمكن.

-N
--أوماجيك
قم بتعيين أقسام النص والبيانات لتكون قابلة للقراءة والكتابة. أيضًا ، لا تقم بمحاذاة الصفحات
مقطع البيانات ، وتعطيل الربط بالمكتبات المشتركة. إذا كان تنسيق الإخراج
يدعم الأرقام السحرية لنمط Unix ، ضع علامة على الإخراج كـ "OMAGIC". ملاحظة: على الرغم من أن أ
يُسمح بقسم النص القابل للكتابة لأهداف PE-COFF ، فهو لا يتوافق مع
مواصفات التنسيق التي نشرتها Microsoft.

- لا omagic
ينفي هذا الخيار معظم تأثيرات -N اختيار. يقوم بتعيين قسم النص إلى
أن تكون للقراءة فقط ، وتفرض أن تكون شريحة البيانات محاذاة للصفحة. ملاحظة - هذا الخيار يفعل
عدم تمكين الارتباط بالمكتبات المشتركة. يستخدم -ديناميكية لهذا.

-o الناتج
- الخرج =الناتج
استعمل الناتج كاسم البرنامج الذي أنتجه ld؛ إذا لم يكن هذا الخيار
المحدد ، الاسم أ يتم استخدامه بشكل افتراضي. يمكن أيضًا لأمر البرنامج النصي "الإخراج"
حدد اسم ملف الإخراج.

-O مستوى
If مستوى هي قيم عددية أكبر من الصفر ld يحسن الإخراج. هذا يمكن
يستغرق وقتًا أطول بكثير وبالتالي ربما يجب تمكينه فقط للنهائي
ثنائي.

-q
--emit-relocs
اترك أقسام ومحتويات النقل في الملفات التنفيذية المرتبطة بالكامل. رابط النشر
قد تحتاج أدوات التحليل والتحسين إلى هذه المعلومات من أجل الأداء الصحيح
تعديلات الملفات التنفيذية. ينتج عن هذا ملفات تنفيذية أكبر.

هذا الخيار مدعوم حاليًا على منصات ELF فقط.

-r
- ريلوكاتابل
توليد إخراج يمكن إعادة تحديد موضعه --- ، على سبيل المثال ، إنشاء ملف إخراج يمكن أن يعمل بدوره كملف
المدخلات ل ld. غالبا ما يسمى هذا جزئي ربط. كأثر جانبي ، في البيئات
التي تدعم أرقام Unix السحرية القياسية ، يعيّن هذا الخيار أيضًا ملفات الإخراج
الرقم السحري إلى "OMAGIC". إذا لم يتم تحديد هذا الخيار ، فإن الملف المطلق هو
أنتجت. عند ربط برامج C ++ ، يكون هذا الخيار سوف ليس حل المراجع إلى
الصانعين. للقيام بذلك ، استخدم -أور.

عندما لا يكون لملف الإدخال نفس تنسيق ملف الإخراج ، الارتباط الجزئي
يتم دعمه فقط إذا كان ملف الإدخال هذا لا يحتوي على أي عمليات نقل. مختلف
يمكن أن يكون لتنسيقات الإخراج مزيد من القيود ؛ على سبيل المثال بعض التنسيقات المستندة إلى "a.out"
لا تدعم الارتباط الجزئي بملفات الإدخال بتنسيقات أخرى على الإطلاق.

هذا الخيار يفعل نفس الشيء مثل -i.

-R اسم الملف
- مجرد رموز =اسم الملف
اقرأ أسماء الرموز وعناوينها من اسم الملف، لكن لا تقم بنقلها أو تضمينها
في الإخراج. هذا يسمح لملف الإخراج الخاص بك للإشارة رمزيًا إلى مطلق
مواقع الذاكرة المحددة في البرامج الأخرى. يمكنك استخدام هذا الخيار أكثر من
ذات مرة.

للتوافق مع روابط ELF الأخرى ، إذا كان الملف -R الخيار متبوع بدليل
name ، بدلاً من اسم الملف ، يتم التعامل معه على أنه امتداد - مسار الخيار.

-s
- شريط الكل
احذف جميع معلومات الرمز من ملف الإخراج.

-S
- شريط التصحيح
احذف معلومات رمز مصحح الأخطاء (ولكن ليس كل الرموز) من ملف الإخراج.

-t
--أثر
اطبع أسماء ملفات الإدخال بصيغة ld يعالجها.

-T ملف
- نص =ملف
استعمل ملف باعتباره البرنامج النصي رابط. يستبدل هذا البرنامج النصي ldالبرنامج النصي الافتراضي للرابط
(بدلاً من الإضافة إليه) ، لذا ملف الأوامر يجب أن تحدد كل ما هو ضروري
صف ملف الإخراج. لو ملف غير موجود في الدليل الحالي ،
يبحث "ld" عنه في الدلائل المحددة في أي دليل سابق -L والخيارات. عديد
-T تتراكم الخيارات.

-u رمز
- undefined =رمز
القوة رمز ليتم إدخالها في ملف الإخراج كرمز غير محدد. القيام بذلك قد ،
على سبيل المثال ، قم بتشغيل ربط وحدات إضافية من المكتبات القياسية. -u قد يكون
مكرر مع وسيطات خيارات مختلفة لإدخال رموز إضافية غير محددة. هذه
يكافئ الخيار الأمر النصي رابط "EXTERN".

-أور لأي شيء بخلاف برامج C ++ ، فإن هذا الخيار يعادل -r: يولد
الإخراج relocatable --- على سبيل المثال ، ملف الإخراج الذي يمكن بدوره أن يكون بمثابة مدخلات إلى ld. عندما
ربط برامج C ++ ، -أور هل حل الإشارات إلى المنشئين ، على عكس -r. نعم هو كذلك
لا يعمل للاستخدام -أور على الملفات التي تم ربطها هي نفسها بـ -أور؛ مرة واحدة في
تم إنشاء جدول المُنشئ ، ولا يمكن إضافته إليه. يستخدم -أور فقط في الماضي
ارتباط جزئي و -r للآخرين.

- فريد [=الجزء]
يقوم بإنشاء قسم إخراج منفصل لكل قسم إدخال مطابق الجزء، أو إذا كان
بدل اختياري الجزء الحجة مفقودة ، لكل قسم إدخال يتيم. ان
قسم اليتيم هو قسم غير مذكور على وجه التحديد في نص رابط. يمكنك استخدام هذا
الخيار عدة مرات في سطر الأوامر ؛ يمنع الدمج الطبيعي للإدخال
المقاطع التي تحمل الاسم نفسه ، لتجاوز تعيينات قسم الإخراج في نص رابط.

-v
--الإصدار
-V اعرض رقم الإصدار لـ ld. -V يسرد الخيار أيضًا المحاكاة المدعومة.

-x
--تجاهل كل
احذف جميع الرموز المحلية.

-X
- تجاهل-السكان المحليين
احذف جميع الرموز المحلية المؤقتة. بالنسبة لمعظم الأهداف، هذا هو كل الرموز المحلية التي
تبدأ الأسماء ب L.

-y رمز
- رمز التتبع =رمز
اطبع اسم كل ملف مرتبط فيه رمز يبدو. يمكن إعطاء هذا الخيار
أي عدد من المرات. في العديد من الأنظمة ، من الضروري إضافة شرطة سفلية مسبقًا.

يكون هذا الخيار مفيدًا عندما يكون لديك رمز غير محدد في الارتباط الخاص بك ولكنك لا تعرف
من أين يأتي المرجع.

-Y مسار
أضف مسار إلى مسار البحث الافتراضي للمكتبة. هذا الخيار موجود لسولاريس
التوافق.

-z الكلمة
الكلمات الرئيسية المعترف بها هي:

كومبريلوك
يجمع بين أقسام إعادة تحديد متعددة وفرزها لإجراء بحث ديناميكي عن الرمز
التخزين المؤقت ممكن.

defs
لا يسمح باستخدام رموز غير محددة في ملفات الكائنات. رموز غير محددة في Shared
لا يزال مسموحًا بالمكتبات.

com.initfirst
هذا الخيار له معنى فقط عند بناء كائن مشترك. يميز الكائن
حتى تتم تهيئة وقت التشغيل قبل تهيئة وقت التشغيل لـ
أي كائنات أخرى يتم إدخالها في العملية في نفس الوقت. وبالمثل
سيحدث إنهاء وقت تشغيل الكائن بعد الانتهاء من وقت تشغيل
أي أشياء أخرى.

تدخل
وضع علامة على الكائن الذي يتداخل جدول الرموز الخاص به قبل كل الرموز باستثناء
الأساسي القابل للتنفيذ.

تحميل
وضع علامة على الكائن بحيث تتم معالجة عوامل التصفية الخاصة به على الفور في وقت التشغيل.

مولديف
يسمح بتعريفات متعددة.

com.nocombreloc
تعطيل دمج أقسام إعادة تحديد متعددة.

نوكوبيريلوك
تعطيل إنتاج نسخ الترجيع.

com.nodefaultlib
وضع علامة على الكائن الذي سيتجاهل البحث عن تبعيات هذا الكائن أي منه
مسارات البحث الافتراضية للمكتبة.

nodelete
وضع علامة على أنه لا يجب إلغاء تحميل الكائن في وقت التشغيل.

نودلوبين
وضع علامة على الكائن غير متاح لـ "dlopen".

nodump
علامات لا يمكن تفريغ الكائن بواسطة "تفريغ".

الآن عند إنشاء مكتبة قابلة للتنفيذ أو مشتركة ، ضع علامة عليها لتخبر الديناميكية
linker لحل جميع الرموز عند بدء تشغيل البرنامج أو عند مشاركته
المكتبة مرتبطة باستخدام dlopen ، بدلاً من إرجاء دقة استدعاء الوظيفة
إلى النقطة التي يتم فيها استدعاء الوظيفة لأول مرة.

الأصل
علامات الكائن قد تحتوي على $ ORIGIN.

يتم تجاهل الكلمات الأساسية الأخرى للتوافق مع Solaris.

-( أرشيف -)
- مجموعة البداية أرشيف --نهاية المجموعة
أرشيف يجب أن تكون قائمة بملفات الأرشيف. قد تكون إما ملفًا صريحًا
الأسماء ، أو -l خيارات.

يتم البحث في الأرشيفات المحددة بشكل متكرر حتى لا توجد مراجع جديدة غير محددة
خلقت. عادة ، يتم البحث في الأرشيف مرة واحدة فقط بالترتيب الذي تم تحديده به
في سطر الأوامر. إذا كان هناك حاجة إلى رمز في هذا الأرشيف لحل ملف
رمز يُشار إليه بواسطة كائن في أرشيف يظهر لاحقًا في سطر الأوامر ،
لن يتمكن الرابط من حل هذا المرجع. من خلال تجميع المحفوظات ،
يتم البحث عنها جميعًا بشكل متكرر حتى يتم حل جميع المراجع المحتملة.

استخدام هذا الخيار له تكلفة أداء كبيرة. من الأفضل استخدامه فقط عندما
هناك مراجع دائرية لا مفر منها بين اثنين أو أكثر من الأرشيفات.

- قبول - غير معروف - المدخلات - القوس
--لا تقبل - غير معروف - المدخلات - القوس
يخبر الرابط بقبول ملفات الإدخال التي لا يمكن التعرف على بنيتها. ال
الافتراض هو أن المستخدم يعرف ما يفعله ويريد الارتباط عمدًا
في ملفات الإدخال غير المعروفة هذه. كان هذا هو السلوك الافتراضي للرابط ، من قبل
الإصدار 2.14. السلوك الافتراضي من الإصدار 2.14 وما بعده هو رفض مثل هذا الإدخال
الملفات ، وهكذا فإن ملفات - قبول - غير معروف - المدخلات - القوس تمت إضافة الخيار لاستعادة القديم
سلوك.

--كما هو مطلوب
- لا حسب الحاجة
يؤثر هذا الخيار على علامات ELF DT_NEEDED للمكتبات الديناميكية المذكورة في الأمر
السطر بعد --كما هو مطلوب خيار. عادةً ، سيضيف الرابط علامة DT_NEEDED لـ
كل مكتبة ديناميكية مذكورة في سطر الأوامر ، بغض النظر عما إذا كانت المكتبة
هو مطلوب بالفعل. --كما هو مطلوب يتسبب في إرسال علامات DT_NEEDED فقط لـ
المكتبات التي تفي ببعض مرجع الرموز من الكائنات العادية غير المعرفة
في النقطة التي تم فيها ربط المكتبة. - لا حسب الحاجة يعيد الافتراضي
سلوك.

--إضافة
--لا حاجة لإضافة
يؤثر هذا الخيار في معالجة المكتبات الديناميكية من علامات ELF DT_NEEDED بتنسيق
المكتبات الديناميكية المذكورة في سطر الأوامر بعد --لا حاجة لإضافة الخيار.
عادةً ، سيضيف الرابط علامة DT_NEEDED لكل مكتبة ديناميكية من DT_NEEDED
العلامات. --لا حاجة لإضافة يتسبب في عدم إرسال علامات DT_NEEDED لتلك المكتبات
من علامات DT_NEEDED. --إضافة يعيد السلوك الافتراضي.

-يجزم الكلمة
تم تجاهل هذا الخيار للتوافق مع SunOS.

-ديناميكية
-دي
-call_shared
الارتباط بالمكتبات الديناميكية. هذا مفيد فقط في الأنظمة الأساسية التي تمت مشاركتها
المكتبات مدعومة. عادةً ما يكون هذا الخيار هو الخيار الافتراضي في مثل هذه الأنظمة الأساسية. ال
المتغيرات المختلفة لهذا الخيار للتوافق مع أنظمة مختلفة. يمكنك
استخدم هذا الخيار عدة مرات في سطر الأوامر: فهو يؤثر على بحث المكتبة عن
-l الخيارات التي تتبعها.

-بالمجموعة
قم بتعيين علامة "DF_1_GROUP" في الإدخال "DT_FLAGS_1" في القسم الديناميكي. هذه
يتسبب رابط وقت التشغيل في معالجة عمليات البحث في هذا الكائن وتبعياته
فقط داخل المجموعة. - رموز غير محلولة = تقرير - الكل هو ضمني. هذه
الخيار مفيد فقط على منصات ELF التي تدعم المكتبات المشتركة.

- ثابت
-dn
-غير مشترك
-ثابتة
لا ترتبط بالمكتبات المشتركة. هذا له معنى فقط على المنصات التي
يتم دعم المكتبات المشتركة. المتغيرات المختلفة لهذا الخيار هي لـ
التوافق مع الأنظمة المختلفة. يمكنك استخدام هذا الخيار عدة مرات في
سطر الأوامر: يؤثر على بحث المكتبة عن -l الخيارات التي تتبعها. هذه
الخيار يعني أيضا - رموز غير محلولة = تقرير - الكل.

-ب رمزي
عند إنشاء مكتبة مشتركة ، اربط المراجع إلى الرموز العامة بالتعريف
داخل المكتبة المشتركة ، إن وجدت. عادة ، من الممكن ربط البرنامج
مقابل مكتبة مشتركة لتجاوز التعريف داخل المكتبة المشتركة. هذه
الخيار مفيد فقط على منصات ELF التي تدعم المكتبات المشتركة.

- تحقق الأقسام
- لا تحقق المقاطع
يطلب الرابط ليس للتحقق من عناوين الأقسام بعد تعيينها لمعرفة ما إذا كان
هناك أي تداخلات. عادةً ما يقوم الرابط بإجراء هذا الفحص، وإذا وجد أيًا منه
التداخلات سوف تنتج رسائل خطأ مناسبة. الرابط يعرف عن، و
لا يعطي بدلات للأقسام في التراكبات. يمكن استعادة السلوك الافتراضي
باستخدام مفتاح سطر الأوامر - تحقق الأقسام.

- المرجع
إخراج جدول مرجعي صليب. إذا تم إنشاء ملف خريطة رابط ، فإن التقاطع
يتم طباعة الجدول المرجعي إلى ملف الخريطة. خلاف ذلك ، يتم طباعته على المعيار
الناتج.

تنسيق الجدول بسيط عن قصد ، بحيث يمكن معالجته بسهولة
برنامج نصي إذا لزم الأمر. يتم طباعة الرموز مرتبة حسب الاسم. لكل رمز ،
يتم إعطاء قائمة بأسماء الملفات. إذا تم تعريف الرمز ، فإن الملف الأول المدرج هو ملف
موقع التعريف. الملفات المتبقية تحتوي على إشارات إلى الرمز.

--لا يوجد تعريف مشترك
يمنع هذا الخيار تخصيص العناوين للرموز الشائعة. النص
الأمر "INHIBIT_COMMON_ALLOCATION" له نفس التأثير.

--لا يوجد تعريف مشترك يسمح الخيار بفصل قرار تعيين العناوين إلى
الرموز الشائعة من اختيار نوع الملف الناتج ؛ خلاف ذلك غير قابلة للنقل
يفرض نوع الإخراج تعيين عناوين للرموز المشتركة. استخدام --لا يوجد تعريف مشترك
يسمح بتعيين الرموز المشتركة المشار إليها من مكتبة مشتركة
عناوين فقط في البرنامج الرئيسي. هذا يزيل المساحة المكررة غير المستخدمة في ملف
مكتبة مشتركة ، ويمنع أيضًا أي التباس محتمل حول حل الخطأ
مكرر عندما يكون هناك العديد من الوحدات الديناميكية ذات مسارات البحث المتخصصة لـ
دقة رمز وقت التشغيل.

- ديفسيم رمز=التعبير
قم بإنشاء رمز عام في ملف الإخراج ، يحتوي على العنوان المطلق المعطى بواسطة
التعبير. يمكنك استخدام هذا الخيار عدة مرات حسب الضرورة لتعريف متعددة
الرموز في سطر الأوامر. يتم دعم شكل محدود من الحسابات الحسابية لـ
التعبير في هذا السياق: يمكنك إعطاء ثابت ست عشري أو اسم
رمز موجود ، أو استخدم "+" و "-" لإضافة أو طرح ثوابت سداسية عشرية أو
حرف او رمز. إذا كنت بحاجة إلى المزيد من التعبيرات التفصيلية ، ففكر في استخدام الأمر linker
لغة من نص. ملحوظة: يجب ألا تكون هناك مسافة بيضاء بينهما رمزأطلقت حملة
علامة يساوي (``='')، و التعبير.

--تشابك [=نمط]
--لا ديانجلي
تتحكم هذه الخيارات في ما إذا كان سيتم إلغاء تشكيل أسماء الرموز في رسائل الخطأ وغيرها
انتاج. عندما يُطلب من الرابط إلغاء التشابك ، فإنه يحاول تقديم أسماء الرموز في ملف
نمط قابل للقراءة: يقطع الشرطات السفلية البادئة إذا تم استخدامها بواسطة ملف الكائن
تنسيق ، وتحويل أسماء الرموز المشوهة C ++ إلى أسماء يمكن للمستخدم قراءتها. مختلف
المترجمات لها أنماط مختلفة من التشويه. يمكن استخدام حجة أسلوب فك التشابك الاختياري
تستخدم لاختيار أسلوب فك التشابك المناسب للمترجم الخاص بك. سوف الرابط
demangle افتراضيًا ما لم يكن متغير البيئة COLLECT_NO_DEMANGLE تم تعيينه. هؤلاء
يمكن استخدام الخيارات لتجاوز الافتراضي.

- رابط ديناميكي ملف
قم بتعيين اسم الرابط الديناميكي. هذا مفيد فقط عند التوليد
الملفات التنفيذية ELF المرتبطة ديناميكيًا. الرابط الديناميكي الافتراضي هو الصحيح عادةً ؛
لا تستخدم هذا إلا إذا كنت تعرف ما تفعله.

- تحذيرات قاتلة
تعامل مع جميع التحذيرات على أنها أخطاء.

--force-exe-لاحقة
تأكد من أن ملف الإخراج له لاحقة. exe.

إذا كان ملف الإخراج المرتبط بالكامل الذي تم إنشاؤه بنجاح لا يحتوي على ".exe" أو ".dll"
لاحقة ، يفرض هذا الخيار على الرابط نسخ ملف الإخراج إلى أحد نفس الاسم
مع لاحقة ". exe". يكون هذا الخيار مفيدًا عند استخدام ملفات makefiles Unix غير المعدلة في ملف
مضيف Microsoft Windows ، نظرًا لأن بعض إصدارات Windows لن تقوم بتشغيل صورة ما لم تكن كذلك
ينتهي بـ ". exe" لاحقة.

--لا يوجد أقسام gc
- أقسام gc
تمكين جمع القمامة لأقسام الإدخال غير المستخدمة. يتم تجاهله على الأهداف التي تفعل ذلك
لا تدعم هذا الخيار. هذا الخيار غير متوافق مع -r. السلوك الافتراضي
(عدم تنفيذ مجموعة البيانات المهملة هذه) يمكن استعادتها عن طريق التحديد
--لا يوجد أقسام gc في سطر الأوامر.

--مساعدة
اطبع ملخصًا لخيارات سطر الأوامر على الإخراج القياسي والخروج.

--تهدف المساعدة
اطبع ملخصًا لجميع الخيارات المحددة المستهدفة على الإخراج القياسي والخروج.

-خريطة ملف الخريطة
اطبع خريطة ارتباط إلى الملف ملف الخريطة. انظر وصف -M الخيار أعلاه.

--لا تحفظ الذاكرة
ld تعمل عادةً على تحسين السرعة على استخدام الذاكرة عن طريق التخزين المؤقت لجداول الرموز الخاصة بـ
إدخال الملفات في الذاكرة. هذا الخيار يقول ld لتحسين استخدام الذاكرة بدلاً من ذلك ، عن طريق
إعادة قراءة جداول الرموز حسب الضرورة. قد يكون هذا مطلوبًا إذا ld نفدت
مساحة الذاكرة أثناء ربط ملف تنفيذي كبير.

--لا - غير محدد
-z defs
الإبلاغ عن مراجع الرموز التي لم يتم حلها من ملفات الكائنات العادية. يتم ذلك حتى لو
يقوم الرابط بإنشاء مكتبة مشتركة غير رمزية. مفتاح
- [no-] allow-shlib-undefined يتحكم في سلوك الإبلاغ دون حل
المراجع الموجودة في المكتبات المشتركة التي تم ربطها بـ.

- السماح متعدد التعريف
-z مولديف
عادةً عندما يتم تحديد رمز عدة مرات ، سيقوم الرابط بالإبلاغ عن خطأ فادح
خطأ. تسمح هذه الخيارات بتعريفات متعددة وسيتم استخدام التعريف الأول.

--السماح-شليب-غير محدد
- no-allow-shlib-undefined
يسمح (الافتراضي) أو لا يسمح بالرموز غير المعرفة في المكتبات المشتركة. هذا التبديل
يشبه --لا - غير محدد إلا أنه يحدد السلوك عندما يكون
الرموز غير المعرفة موجودة في مكتبة مشتركة بدلاً من ملف كائن عادي. نعم هو كذلك
لا يؤثر على كيفية معالجة الرموز غير المعرفة في ملفات الكائنات العادية.

السبب في أن --السماح-شليب-غير محدد هو الافتراضي أن المكتبة المشتركة
قد لا يكون التحديد في وقت الارتباط هو نفسه المتاح عند التحميل
الوقت ، لذلك قد تكون الرموز قابلة للحل بالفعل في وقت التحميل. بالإضافة إلى أن هناك بعض
الأنظمة (مثل BeOS) حيث تكون الرموز غير المعرفة في المكتبات المشتركة أمرًا طبيعيًا. (النواة
تصحيحاتهم في وقت التحميل لتحديد الوظيفة الأكثر ملاءمة للتيار
بنيان. يستخدم هذا على سبيل المثال لتحديد مجموعة memset مناسبة ديناميكيًا
وظيفة). يبدو أنه من الطبيعي أيضًا أن تكون مكتبات HPPA المشتركة غير محددة
حرف.

- لا - نسخة غير محددة
عادةً عندما يكون للرمز إصدار غير محدد ، سيتجاهله الرابط. هذه
الخيار لا يسمح بالرموز ذات الإصدار غير المحدد وسيتم إصدار خطأ فادح
بدلا من ذلك.

- الافتراضي المتماثل
إنشاء واستخدام إصدار رمز افتراضي (السونام) للرموز المصدرة غير المُصدرة.

- افتراضي استيراد سيمفر
إنشاء واستخدام إصدار رمز افتراضي (السونام) للرموز المستوردة غير المحسّنة.

--لا يوجد تحذير - عدم تطابق
عادة ld سوف يعطي خطأ إذا حاولت ربط ملفات الإدخال التي هي
غير متطابقة لسبب ما ، ربما لأنه تم تجميعها من أجل مختلف
معالجات أو ل endiannesses مختلفة. هذا الخيار يقول 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.

- مسار دير
أضف دليلًا إلى مسار البحث في مكتبة وقت التشغيل. يستخدم هذا عند ربط ELF
قابل للتنفيذ مع الكائنات المشتركة. الجميع - مسار الحجج متسلسلة وتمريرها إلى
رابط وقت التشغيل ، والذي يستخدمه لتحديد موقع الكائنات المشتركة في وقت التشغيل. ال - مسار
يستخدم الخيار أيضًا عند تحديد موقع الكائنات المشتركة التي تحتاجها الكائنات المشتركة
المدرجة صراحة في الارتباط ؛ انظر وصف -rpath- الارتباط اختيار. إذا
- مسار لا يتم استخدامه عند ربط ملف تنفيذي ELF ، محتويات البيئة
سيتم استخدام "LD_RUN_PATH" المتغير إذا تم تعريفه.

- مسار يمكن أيضًا استخدام الخيار على SunOS. بشكل افتراضي ، في SunOS ، سيقوم الرابط
شكل تصحيح بحث وقت التشغيل من بين جميع ملفات -L يتم إعطاء الخيارات. اذا كان - مسار خيار
عند استخدامه ، سيتم تشكيل مسار البحث في وقت التشغيل حصريًا باستخدام امتداد - مسار الخيارات،
تجاهل -L والخيارات. يمكن أن يكون هذا مفيدًا عند استخدام gcc ، مما يضيف الكثير -L
الخيارات التي قد تكون موجودة على أنظمة الملفات المثبتة على NFS.

للتوافق مع روابط ELF الأخرى ، إذا كان الملف -R الخيار متبوع بدليل
name ، بدلاً من اسم الملف ، يتم التعامل معه على أنه امتداد - مسار الخيار.

-rpath- الارتباط DIR
عند استخدام ELF أو SunOS ، قد تتطلب مكتبة مشتركة أخرى. يحدث هذا عندما يكون ملف
يتضمن ارتباط "ld -shared" مكتبة مشتركة كأحد ملفات الإدخال.

عندما يواجه الرابط مثل هذه التبعية عند القيام بعمل غير مشترك وغير قابل للنقل
رابط ، سيحاول تلقائيًا تحديد موقع المكتبة المشتركة المطلوبة وتضمينها
في الرابط ، إذا لم يتم تضمينه بشكل صريح. في مثل هذه الحالة ، فإن -rpath- الارتباط خيار
يحدد المجموعة الأولى من الدلائل للبحث. ال -rpath- الارتباط قد يحدد الخيار
تسلسل أسماء الدلائل إما عن طريق تحديد قائمة بالأسماء مفصولة بـ
النقطتين ، أو بالظهور عدة مرات.

يجب استخدام هذا الخيار بحذر لأنه يتجاوز مسار البحث الذي قد يكون به
تم تجميعها في مكتبة مشتركة. في مثل هذه الحالة من الممكن استخدام
عن غير قصد مسار بحث مختلف عن الذي سيفعله رابط وقت التشغيل.

يستخدم الرابط مسارات البحث التالية لتحديد موقع المكتبات المشتركة المطلوبة.

1. أي أدلة يحددها -rpath- الارتباط خيارات.

2. أي أدلة يحددها - مسار والخيارات. الفرق بين - مسار و
-rpath- الارتباط هي تلك الدلائل المحددة من قبل - مسار خيارات مدرجة في
قابل للتنفيذ ويستخدم في وقت التشغيل ، في حين أن ملف -rpath- الارتباط الخيار الوحيد الفعال
في وقت الارتباط. إنه للرابط الأصلي فقط.

3. في نظام ELF ، إذا كان - مسار و "rpath-link" خيارات لم يتم استخدامها ، ابحث في
محتويات متغير البيئة "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
الخيار غير مستخدم وهناك رموز غير محددة في الارتباط.

- شائع
هذا الخيار يقول 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" مثل اسم القسم.

- رموز غير محلولة =طريقة
حدد كيفية التعامل مع الرموز التي لم يتم حلها. هناك أربع قيم ممكنة لـ
طريقة:

تجاهل الكل
لا تبلغ عن أي رموز لم يتم حلها.

تقرير الكل
الإبلاغ عن جميع الرموز التي لم يتم حلها. هذا هو الافتراضي.

تجاهل ملفات الكائن
قم بالإبلاغ عن الرموز التي لم يتم حلها والموجودة في المكتبات المشتركة ، ولكن تجاهلها
إذا كانت تأتي من ملفات كائن عادية.

تجاهل في libs المشتركة
قم بالإبلاغ عن الرموز التي لم يتم حلها والتي تأتي من ملفات الكائنات العادية ، ولكن تجاهلها إذا كان
يأتون من مكتبات مشتركة. يمكن أن يكون هذا مفيدًا عند إنشاء ملف ديناميكي
ثنائي ومن المعروف أن جميع المكتبات المشتركة التي يجب الرجوع إليها
يتم تضمينها في سطر أوامر الرابط.

يمكن أيضًا التحكم في سلوك المكتبات المشتركة بمفردها بواسطة
- [no-] allow-shlib-undefined الخيار.

عادةً ما يُنشئ الرابط رسالة خطأ لكل رمز لم يتم حله تم الإبلاغ عنه
لكن الخيار - رموز لم يتم حلها يمكن تغيير هذا إلى تحذير.

--dll- مطوّل
- الإسراف
اعرض رقم الإصدار لـ ld وقائمة مضاهاة رابط المدعومة. عرض
ملفات الإدخال التي يمكن فتحها ولا يمكن فتحها. اعرض نص الرابط المستخدم من قبل
الرابط.

- النسخة- النصي =الإصدار النصي
حدد اسم إصدار البرنامج النصي للرابط. يستخدم هذا عادة عندما
إنشاء مكتبات مشتركة لتحديد معلومات إضافية حول الإصدار
التسلسل الهرمي للمكتبة قيد الإنشاء. هذا الخيار مفيد فقط في ELF
المنصات التي تدعم المكتبات المشتركة.

- تحذير مشترك
تحذير عند دمج رمز مشترك مع رمز مشترك آخر أو مع رمز
تعريف. تسمح روابط Unix بهذه الممارسة القذرة إلى حد ما ، لكن الروابط على البعض
أنظمة التشغيل الأخرى لا تفعل ذلك. يتيح لك هذا الخيار البحث عن المشاكل المحتملة
من الجمع بين الرموز العالمية. لسوء الحظ ، تستخدم بعض مكتبات لغة سي هذه الممارسة ، لذا
قد تتلقى بعض التحذيرات حول الرموز في المكتبات وكذلك في برامجك.

هناك ثلاثة أنواع من الرموز العالمية ، موضحة هنا بأمثلة C:

مادبا i = 1;
تعريف يدخل في قسم البيانات المهيأة لملف الإخراج.

خارجي مادبا i;
مرجع غير محدد لا يخصص مساحة. يجب أن يكون هناك إما ملف
تعريف أو رمز مشترك للمتغير في مكان ما.

مادبا i;
رمز مشترك. إذا كان هناك فقط (واحد أو أكثر) رمز مشترك للمتغير ،
ينتقل في منطقة البيانات غير المهيأة لملف الإخراج. يدمج الرابط
عدة رموز مشتركة لنفس المتغير في رمز واحد. إذا كانوا كذلك
بأحجام مختلفة ، فهي تختار الحجم الأكبر. يتحول الرابط إلى رمز مشترك
في إعلان ، إذا كان هناك تعريف لنفس المتغير.

- تحذير مشترك يمكن أن ينتج عن الخيار خمسة أنواع من التحذيرات. كل تحذير يتكون من
زوج من الخطوط: الأول يصف الرمز الذي تمت مواجهته للتو ، والثاني
يصف الرمز السابق الذي تم مواجهته بنفس الاسم. أحدهما أو كلاهما
ستكون الرموز رمزًا شائعًا.

1. تحويل رمز مشترك إلى مرجع ، لأنه يوجد بالفعل تعريف
للرمز.

( ): تحذير: شائع في " "
تم تجاوزه بحكم التعريف
( ): تحذير: محدد هنا

2. تحويل رمز شائع إلى مرجع ، لأنه يوجد تعريف لاحق لـ
رمز مصادفة. هذه هي نفس الحالة السابقة ، باستثناء أن ملف
يتم مواجهة الرموز بترتيب مختلف.

( ): تحذير: تعريف ` "
تجاوز المشترك
( ): تحذير: الشائع هنا

3. دمج رمز مشترك مع رمز مشترك سابق بنفس الحجم.

( ): تحذير: متعدد مشترك
من ` "
( ): تحذير: الشائع السابق هنا

4. دمج رمز مشترك مع رمز مشترك سابق أكبر.

( ): تحذير: شائع في " "
تم تجاوزه بواسطة مشترك أكبر
( ): تحذير: الشائع الأكبر موجود هنا

5. دمج رمز مشترك مع رمز مشترك أصغر سابقًا. نفس الشئ
كما في الحالة السابقة ، باستثناء أن الرموز موجودة في شكل مختلف
النظام.

( ): تحذير: شائع في " "
تجاوز المشترك الأصغر
( ): تحذير: الشائع الأصغر موجود هنا

- تحذير المنشئين
تحذير إذا تم استخدام أي منشآت عالمية. هذا مفيد فقط لملف كائن قليل
التنسيقات. بالنسبة إلى التنسيقات مثل COFF أو ELF ، لا يمكن للرابط اكتشاف استخدام ملفات
الصانعين.

--حذير متعدد GP
تحذير إذا كانت هناك حاجة إلى قيم متعددة للمؤشر العام في ملف الإخراج. هذا فقط
مفيد لبعض المعالجات ، مثل Alpha. على وجه التحديد ، بعض المعالجات
وضع الثوابت ذات القيمة الكبيرة في قسم خاص. سجل خاص (العالمية
المؤشر) إلى منتصف هذا القسم ، بحيث يمكن تحميل الثوابت
بكفاءة عبر وضع العنونة النسبي للسجل الأساسي. منذ الإزاحة في القاعدة-
الأسلوب النسبي للتسجيل ثابت وصغير نسبيًا (على سبيل المثال ، 16 بت) ، وهذا يحد من
الحجم الأقصى للمسبح الثابت. وبالتالي ، في البرامج الكبيرة ، غالبًا ما يكون من الضروري
استخدام قيم مؤشر عالمية متعددة من أجل أن تكون قادرة على معالجة كل ما هو ممكن
الثوابت. يؤدي هذا الخيار إلى إصدار تحذير عند حدوث هذه الحالة.

- تحذير مرة واحدة
تحذير مرة واحدة فقط لكل رمز غير محدد ، بدلاً من التحذير مرة واحدة لكل وحدة تشير إلى
هنا.

- قسم التحذير - محاذاة
تحذير إذا تم تغيير عنوان قسم الإخراج بسبب المحاذاة. عادة،
سيتم تعيين المحاذاة بواسطة قسم الإدخال. سيتم تغيير العنوان فقط إذا كان
غير محدد صراحة ؛ أي ، إذا كان الأمر "SECTIONS" لا يحدد بداية
عنوان القسم.

--حذير مشترك textrel
تحذير إذا قام الرابط بإضافة DT_TEXTREL إلى كائن مشترك.

- رموز لم يتم حلها
إذا كان الرابط سيبلغ عن رمز لم يتم حله (انظر الخيار
- رموز غير محلولة) عادةً ما يؤدي إلى حدوث خطأ. هذا الخيار يجعلها
توليد تحذير بدلا من ذلك.

- رموز لم يتم حلها خطأ
يؤدي هذا إلى استعادة السلوك الافتراضي للرابط المتمثل في إنشاء أخطاء عند الإبلاغ
الرموز التي لم يتم حلها.

- أرشيف كامل
لكل أرشيف مذكور في سطر الأوامر بعد ملف - أرشيف كامل اختيار،
قم بتضمين كل ملف كائن في الأرشيف في الرابط ، بدلاً من البحث في ملف
أرشيف لملفات الكائن المطلوبة. يستخدم هذا عادة لتحويل ملف أرشيف
في مكتبة مشتركة ، مما يجبر كل كائن على أن يتم تضمينه في المشتركة الناتجة
مكتبة. يمكن استخدام هذا الخيار أكثر من مرة.

ملاحظتان عند استخدام هذا الخيار من دول مجلس التعاون الخليجي: أولاً ، لا تعرف دول مجلس التعاون الخليجي عن هذا الخيار ،
لذلك عليك أن تستخدم -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".

--تمكين-جديد- dtags
--تعطيل-جديد-دتاجس
يمكن لهذا الرابط إنشاء العلامات الديناميكية الجديدة في ELF. لكن أنظمة ELF الأقدم قد لا تفعل ذلك
افهمهم. إذا حددت --تمكين-جديد- dtags، سيتم إنشاء العلامات الديناميكية
كما هو مطلوب. إذا حددت --تعطيل-جديد-دتاجس، لن يتم إنشاء علامات ديناميكية جديدة.
افتراضيًا ، لا يتم إنشاء العلامات الديناميكية الجديدة. لاحظ أن هذه الخيارات فقط
متاح لأنظمة ELF.

- حجم الهاش =عدد
عيّن الحجم الافتراضي لجداول تجزئة الرابط على رقم أولي قريب منه عدد.
يمكن أن تؤدي زيادة هذه القيمة إلى تقليل طول الوقت الذي يستغرقه الرابط لأداءه
المهام ، على حساب زيادة متطلبات ذاكرة الرابط. بصورة مماثلة
يمكن أن يؤدي تقليل هذه القيمة إلى تقليل متطلبات الذاكرة على حساب السرعة.

- تقليل - الذاكرة - النفقات العامة
يقلل هذا الخيار من متطلبات الذاكرة في وقت التشغيل ، على حساب الارتباط
سرعة. تم تقديم هذا لتحديد خوارزمية O(n^2) القديمة لملف خريطة الارتباط
الجيل الجديد ، بدلاً من خوارزمية O (n) الجديدة التي تستخدم حوالي 40٪ من الذاكرة لـ
تخزين الرموز.

هناك تأثير آخر للمفتاح وهو ضبط حجم جدول التجزئة الافتراضي على 1021، والذي
مرة أخرى يحفظ الذاكرة بتكلفة إطالة وقت تشغيل الرابط. لم يتم ذلك
ولكن إذا كان - حجم الهاش تم استخدام التبديل.

- تقليل - الذاكرة - النفقات العامة يمكن أيضًا استخدام رمز التبديل لتمكين المفاضلات الأخرى في
الإصدارات المستقبلية من الرابط.

يدعم رابط 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 المستهدف
ميناء الرابط]

--enable-stdcall-fixup
--تعطيل-stdcall-fixup
إذا وجد الرابط رمزًا لا يمكنه حله، فسيحاول القيام بـ "fuzzy
"الربط" من خلال البحث عن رمز محدد آخر يختلف فقط في تنسيق الملف
اسم الرمز (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
المنفذ المستهدف للرابط]

--محاذاة الملف
حدد محاذاة الملف. ستبدأ الأقسام في الملف دائمًا عند إزاحة الملف
وهي مضاعفات هذا الرقم. هذا الخيار الافتراضي هو 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 المستهدفة للرابط]

- نسخة رئيسية صورة قيمنا
يضبط الرقم الرئيسي لـ "إصدار الصورة". الإعدادات الافتراضية هي 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 ، ما لم يتم تحديد أحدها باستخدام امتداد
حجة "- صورة-قاعدة". باستخدام تجزئة تم إنشاؤها من اسم dll لإنشاء ملف فريد
قواعد الصور لكل 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.

بشكل عام ، فإن استخدام "الاستيراد التلقائي" "يعمل فقط" - ولكن في بعض الأحيان قد ترى هذا
رسالة:

لا يمكن استيراد "المتغير" تلقائيًا. الرجاء قراءة وثائق 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 للرابط]

تدعم الوصلات 68HC11 و 68HC12 خيارات محددة للتحكم في بنك الذاكرة
تحويل رسم الخرائط وتوليد كود الترامبولين.

--لا الترامبولين
هذا الخيار يعطل توليد الترامبولين. افتراضيا الترامبولين هو
تم إنشاؤه لكل دالة بعيدة تسمى باستخدام تعليمة "jsr" (هذا
يحدث عندما يتم أخذ مؤشر إلى وظيفة بعيدة).

- نافذة البنك الاسم
يشير هذا الخيار للرابط إلى اسم منطقة الذاكرة في ملف الذاكرة
المواصفات التي تصف نافذة بنك الذاكرة. تعريف هذه المنطقة هو
ثم يستخدمه الرابط لحساب الترحيل والعناوين داخل نافذة الذاكرة.

البيئة


يمكنك تغيير سلوك ld مع متغيرات البيئة "GNUTARGET" ،
"LDEMULATION" و "COLLECT_NO_DEMANGLE".

يحدد "GNUTARGET" تنسيق كائن ملف الإدخال إذا لم تستخدمه -b (أو مرادفه
--صيغة). يجب أن تكون قيمتها أحد أسماء BFD لتنسيق الإدخال. إذا لم يكن هناك
"GNUTARGET" في البيئة ، ld يستخدم التنسيق الطبيعي للهدف. إذا كان "GNUTARGET"
تم تعيينه على "افتراضي" ثم يحاول BFD اكتشاف تنسيق الإدخال عن طريق فحص الملف الثنائي
ملفات الإدخال غالبًا ما تنجح هذه الطريقة ، ولكن هناك بعض الغموض المحتمل منذ ذلك الحين
ليست طريقة للتأكد من أن الرقم السحري المستخدم لتحديد تنسيقات ملف الكائن هو
فريدة من نوعها. ومع ذلك ، فإن إجراء التكوين لـ BFD على كل نظام يضع ملف
التنسيق التقليدي لهذا النظام أولاً في قائمة البحث ، لذلك يتم حل الغموض
لصالح الاتفاقية.

تحدد "LDEMULATION" المحاكاة الافتراضية إذا لم تستخدم ملف -m اختيار. ال
يمكن أن تؤثر المحاكاة على جوانب مختلفة من سلوك الرابط ، لا سيما الرابط الافتراضي
النصي. يمكنك سرد المحاكاة المتاحة بامتداد - الإسراف or -V والخيارات. إذا كان
-m لم يتم استخدام الخيار ، ولم يتم تعريف متغير البيئة "LDEMULATION" ، و
تعتمد المحاكاة الافتراضية على كيفية تكوين الرابط.

عادةً ، سيتحول الرابط افتراضيًا إلى رموز فك التشابك. ومع ذلك، إذا
تم تعيين "COLLECT_NO_DEMANGLE" في البيئة ، ثم سيتم افتراضيًا عدم فك التشابك
حرف او رمز. يتم استخدام متغير البيئة هذا بطريقة مماثلة بواسطة رابط "gcc"
برنامج المجمع. قد يتم تجاوز القيمة الافتراضية بواسطة - تفكيك و --لا ديانجلي
خيارات.

استخدم h8300-hitachi-coff-ld عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

  • 1
    DivFix + +
    DivFix + +
    DivFix ++ هو برنامج إصلاح فيديو AVI الخاص بك و
    معاينة البرمجيات. انها مصممة للإصلاح
    ومعاينة الملفات التي يتم تنزيلها
    من ed2k (emule) ، سيل ، نوتيلا ، بروتوكول نقل الملفات ...
    قم بتنزيل DivFix ++
  • 2
    مجتمع JBoss
    مجتمع JBoss
    المشاريع التي يقودها المجتمع والتي تتميز بامتداد
    أحدث الابتكارات لأحدث التقنيات
    تطبيقات. مشروعنا الرائد JBoss AS هو
    المصدر المفتوح الرائد ،
    متوافقة مع المعايير ...
    قم بتنزيل مجتمع JBoss
  • 3
    جانغو فيلير
    جانغو فيلير
    django Filer هو إدارة الملفات
    تطبيق django الذي يجعل
    التعامل مع الملفات والصور في غاية السهولة.
    django-filer هو إدارة الملفات
    تطبيق djang ...
    تنزيل Django Filer
  • 4
    xCAT
    xCAT
    مجموعة أدوات إدارة الكتلة المتطرفة.
    xCAT هو إدارة مجموعة قابلة للتطوير
    وأداة التزويد التي توفر
    التحكم في الأجهزة والاكتشاف ونظام التشغيل
    قرص / دي ...
    تنزيل xCAT
  • 5
    PSI
    PSI
    Psi هو برنامج XMPP قوي عبر الأنظمة الأساسية
    عميل مصمم للمستخدمين ذوي الخبرة.
    هناك تصميمات متاحة لـ MS
    Windows و GNU / Linux و macOS .. الجمهور:
    المستخدمين النهائيين...
    تحميل Psi
  • 6
    Blobby Volley 2 تحديث
    Blobby Volley 2 تحديث
    استمرار الرسمي الشهير
    لعبة بلوبي فولي 1.x أركيد..
    الجمهور: المستخدمون النهائيون / سطح المكتب. مستخدم
    الواجهة: برنامج OpenGL، SDL. برمجة
    اللغة: C++، لوا. ج...
    تحميل لعبة بلوبي فولي 2
  • أكثر "

أوامر لينكس

Ad