أ. خارج
يُعدّ ملف a.out صيغة ملفات تُستخدم في الإصدارات القديمة من أنظمة تشغيل الحواسيب الشبيهة بنظام يونكس، وذلك لتخزين الملفات التنفيذية ، ورمز الكائن ، وفي الأنظمة الأحدث، المكتبات المشتركة . وهو اختصار لعبارة " مخرجات المُجمِّع "، وهو اسم ملف مخرجاتPDP -7 الذي ابتكره كين تومسون . [ 1 ] وقد أُطلق هذا المصطلح لاحقًا على صيغة الملف الناتج لتمييزه عن صيغ رموز الكائن الأخرى.
يظل اسم ملف الإخراج الافتراضي للملفات التنفيذية التي يتم إنشاؤها بواسطة بعض المترجمات والروابط عندما لا يتم تحديد اسم إخراج، على الرغم من أن الملفات التي تم إنشاؤها ليست في الواقع بتنسيق a.out، ولكنها غالبًا ما تكون بتنسيق ELF . [ 2 ]
تم إيقاف دعم تنسيق a.out في نواة لينكس الإصدار 5.1، وتمت إزالة دعم هذا التنسيق في إصدارات النواة 5.18 و5.19. [ 3 ] [ 4 ] [ 5 ]
تاريخ
ظهر تنسيق a.out الخاص بجهاز PDP-7 ، المشابه لتنسيق a.out المستخدم في جهاز PDP-11 ، في الإصدار الأول من نظام يونكس. [ 6 ] وقد تم استبداله بتنسيق COFF في نظام AT&T Unix System V ، والذي بدوره تم استبداله بتنسيق ELF في الإصدار الرابع من System V. يتم التعرف على ملفات a.out من خلال الأرقام السحرية ذات الرموز الثمانية 0407 أو 0410 أو 0413. [ 7 ]
تم تحويل MINIX 3 إلى ELF في الإصدار 3.2.0 الصادر في فبراير 2012.
استخدم نظام لينكس أيضًا ملف a.out حتى إصدار النواة 1.2 (مارس 1995)، حين استُبدل بملف ELF على نفس المنصة. [ 8 ] أُضيف دعم ELF في النواة التجريبية 1.1.52. كان انتقال لينكس إلى ELF شبه إجباري نظرًا لتعقيد عملية إنشاء مكتبات a.out المشتركة على تلك المنصة، والتي تضمنت ضرورة تسجيل مساحة العناوين الافتراضية التي توجد بها المكتبة لدى جهة مركزية، إذ لم يكن ملف ld.so الخاص بملف a.out في لينكس قادرًا على نقل المكتبات المشتركة. [ 9 ]
نظرًا لأن سلاسل أدوات الترجمة الحديثة لم تكن تُنتج ملفات a.out ، ولأن إمكانيات هذا التنسيق كانت تعاني من تلف البيانات ، فقد تم إيقاف دعم تنسيق ملفات a.out على نظام لينكس مع إصدار نواة النظام 5.1. وتمت إزالة دعم هذا التنسيق من معماريتي DEC Alpha و Motorola 68000 ، وهما آخر معماريتين استخدمتاه، في الإصدار 5.18. كما تمت إزالة دعم a.out في معمارية x86 بشكل كامل في الإصدار 5.19. [ 3 ] [ 10 ] [ 4 ] [ 11 ] [ 5 ] [ 12 ]
على الرغم من استمرار نظام بيركلي يونكس في استخدام تنسيق a.out لبعض الوقت، فقد تحولت أنظمة BSD الحديثة منذ ذلك الحين إلى تنسيق ELF. انتقل نظام NetBSD/i386 رسميًا من a.out إلى ELF في إصداره 1.5 في ديسمبر 2000. واعتمد نظام FreeBSD/i386 تنسيق ELF كمعيار خلال الانتقال من الإصدار 2.2 إلى 3.0 في عام 1998، إلا أن دعم a.out ظل قائمًا في النظام. [ 13 ] تمكنت مختلف إصدارات BSD من الاستمرار في استخدام ملفات a.out الثنائية لفترة طويلة بعد إجبار لينكس على التحول إلى ELF، وذلك بفضل مرونة تنسيق a.out في BSD مقارنةً بتنسيق لينكس. [ 14 ] [ 15 ]
تصحيح الأخطاء
يتم دعم ملف a.out لمعلومات التصحيح من خلال استخدام مدخلات خاصة في جدول الرموز تُسمى stabs . وقد استُخدم تنسيق stabs أيضًا في العديد من إصدارات COFF و ELF .
انظر أيضاً
مراجع
- ↑ ريتشي (1993) : "تفوّق مُجمِّع PDP-7 الخاص بـ Thompson حتى على مُجمِّع DEC في بساطته؛ إذ كان يُقيِّم التعابير ويُصدر البتات المُقابلة لها. لم تكن هناك مكتبات، ولا مُحمِّل أو مُحرِّر ربط: كان يتم تقديم كامل مصدر البرنامج إلى المُجمِّع، وكان ملف الإخراج - ذو الاسم الثابت - الناتج قابلاً للتنفيذ مباشرةً. (يُفسِّر هذا الاسم، a.out ، جزءًا من أصل كلمة Unix؛ فهو ناتج المُجمِّع. حتى بعد أن اكتسب النظام رابطًا ووسيلة لتحديد اسم آخر صراحةً، فقد تم الاحتفاظ به كنتيجة تنفيذية افتراضية للترجمة.)"
- ↑ وود، روبرت (8 أبريل 2002). "ماذا تفعل بـ a.out؟" . gcc-help (قائمة بريدية) . تم الاطلاع عليه في 28 أبريل 2007 .
- 1 2 "نواة لينكس تُوقف دعم A.out نهائياً" . فورونيكس . تم الاطلاع عليه في 1 سبتمبر 2020 .
- ١ ٢ "لينكس تخطط لإيقاف دعم a.out على معالجات ألفا وM68k لمعرفة ما إذا كان أحد سيهتم - فورونيكس" . www.phoronix.com . تاريخ الاطلاع: ٢٥ أغسطس ٢٠٢٤ .
- ١ ٢ "لينكس ٥.١٩ يزيل أخيرًا دعم x86 a.out القديم - فورونيكس" . www.phoronix.com . تم الاطلاع عليه بتاريخ ٢٥ أغسطس ٢٠٢٤ .
- ↑ ريتشي، دينيس (3 نوفمبر 1971). a.out – مخرجات المجمّع ومحرر الربط (ملف PDF) . مختبرات بيل . تم الاطلاع عليه بتاريخ 24 نوفمبر 2006 .
- ↑ "صفحة a.out من القسم 5 من دليل يونكس الثامن" . man.cat-v.org . تم الاطلاع عليه بتاريخ 12 أكتوبر 2022 .
- ↑ بارلو، دانيال (14 يوليو 1996). "دليل استخدام ملفات ELF لنظام لينكس (الإصدار 1.29)" . مؤرشف من الأصل في 13 يوليو 2004. تم الاطلاع عليه في 28 مارس 2008 .
- ↑ دريبر، أولريش (20 أغسطس 2006). كيفية كتابة المكتبات المشتركة (ملف PDF) (تقرير فني). 4.0. القسم 1.1 (لمحة تاريخية). مؤرشف (ملف PDF) من الأصل في 16 يونيو 2007. تم الاطلاع عليه في 20 يونيو 2007. عند إدخال المكتبات المشتركة ،
كان لا بد من اتخاذ بعض قرارات التصميم للعمل ضمن قيود ملف a.out. (...) لكل هذه الأسباب وغيرها، تحول نظام لينكس مبكرًا إلى استخدام تنسيق ELF (تنسيق الربط التنفيذي) كتنسيق ثنائي.
- ↑ بيتكوف، بوريسلاف (5 مارس 2019). "x86: إيقاف دعم a.out" . تم الاطلاع عليه في 5 مارس 2019. يدعم لينكس ملفات ELF الثنائية منذ حوالي 25 عامًا .
لقد تدهورت عملية تفريغ الذاكرة الأساسية لملفات a.out بشكل كبير، وتحتاج إلى بعض الإصلاحات لإعادتها إلى وضعها الطبيعي، ولكن بالنظر إلى أن حتى سلاسل الأدوات لا تستطيع إنشاء ملفات تنفيذية بصيغة a.out في تكوينها الافتراضي، فلنوقف دعم a.out ونزيله بعد إصدارين.
- ↑ بيدرمان، إريك و. (9 مارس 2022). "a.out: إيقاف بناء دعم a.out/osf1 على معماريتي ألفا وm68k" . تم الاطلاع عليه في 25 أغسطس 2024.
لنرى ما إذا كان أحد يهتم بدعم a.out على آخر معماريتين تدعمانه، وذلك بتعطيل بناء الدعم في Kconfig.
- ↑ بيتكوف، بوريسلاف (11 أبريل 2022). "x86: إزالة دعم a.out" . تم الاطلاع عليه في 25 أغسطس 2024.
أدى التحديث eac616557050 ("x86: إيقاف دعم a.out") إلى إيقاف دعم a.out مع وعد بإزالته بعد بضعة إصدارات. تم تضمين هذا التحديث في الإصدار 5.1. والآن، بعد مرور أكثر من بضعة إصدارات، لم يعترض أحد، لذا تمت إزالته.
- ↑ لوكاس، مايكل و. (2019). FreeBSD المطلق : الدليل الكامل لنظام FreeBSD ( الطبعة الثالثة). سان فرانسيسكو. ص 408. ISBN 9781593278922.
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ يونغديل، إريك (1 أبريل 1995). "تنسيق ملف كائن ELF: مقدمة" . مؤرشف من الأصل في 10 مارس 2009. تم الاطلاع عليه في 6 مايو 2012.
(...) ليس من المستحيل تصميم تطبيقات مكتبات مشتركة تعمل مع a.out. تُعد مكتبات لينكس المشتركة الحالية مثالًا على ذلك؛ ومثال آخر هو المكتبات المشتركة بنمط SunOS والتي تستخدمها أنظمة BSD حاليًا. تحتوي المكتبات المشتركة بنمط SunOS على العديد من المفاهيم نفسها الموجودة في المكتبات المشتركة بنمط ELF (...)
- ↑ "خرافات BSD" . مؤرشف من الأصل في 17 أبريل 2007. تم الاطلاع عليه في 10 أبريل 2007.
لم تكن هناك أسباب ملحة للتحول مبكرًا. على وجه الخصوص، لم يكن لدى FreeBSD (ولا يزال) مشاكل في بناء المكتبات المشتركة التي حفزت تحويل Linux من a.out إلى ELF.
للمزيد من القراءة
- ريتشي، دينيس م. (20-23 أبريل 1993). "تطور لغة C". المؤتمر الثاني لجمعية ACM SIGPLAN حول تاريخ لغات البرمجة . كامبريدج، ماساتشوستس: ACM . الصفحات 201-208 . doi : 10.1145/154766.155580 . ISBN 0-89791-570-4.
روابط خارجية
- صفحة دليل المستخدم لنظام يونكس الإصدار 6
- صفحة دليل المستخدم لنظام التشغيل BSD 2.11 a.out
- صفحة دليل المستخدم لنظام FreeBSD
- صفحة دليل المستخدم لنظام NetBSD
- تنسيقات الملفات القابلة للتنفيذ
