مصرف تصالبي
تعريفًا بالموضوع، المُصرِّف التصالبي أو المُصرِّف المتعدد أو المُصرِّف العابر أو المُصرِّف المتعدي هو محول برمجي (مترجم) قادر على تحويل الكود البرمجي إلى ملف تنفيذي لأكثر من منصة حاسوبية، ويمكن أن ينتج أكواداً لمنصة تختلف عن المنصة التي يعمل عليها. فمثلًا حينما يتم تجميع كود برنامج ما على حاسوب شخصي بهدف تصدير ملف تنفيذي يعمل على أجهزة الهواتف الذكية مثل أندرويد، تتم العملية عبر مجمع عابر. ونتناول فيما يلي مزيدًا من التفاصيل.
وعلى صعيد آخر، المترجم المتعدد ضروري لإنتاج كود يعمل على منصات المتعددة، طورت عبر منصة معينة مختلفة عن المنصة المستهدفة. فقد تكون المنصة المستهدفة لا تسمح بتشغيل مترجم عليها، مثل المتحكمات المصغرة في الأنظمة المضمنة، كون هذه المنصات لا تحوي نظام تشغيل.
Cross Linux from Scratch Project
علاوةً على ذلك، تملك أي بي إم (IBM) تدريب واضح جداً حول بناء المتعدد لسلاسل الأدوات لمترجم جي سي سي.
وفي هذا الصدد، Cross-compilation avec GCC 4 sous Windows pour Linux - A تدريب فيه كيف تبني سلاسل الأدوات لمترجم جي سي سي، لكن من ويندوز إلى لينكس، الموضوع يُوضح ببطئ.
استخدامات المترجم المتعدد
مترجمات سي ميكروسوفت
إضافةً إلى ذلك، الأنظمة المضمنة حيث يملك الجهاز موارد محدودة. مثلًا، يملك فرن الميكروويف حاسوباً صغيراً جداً يقرأ حساسات في الباب وشاشة اللمس، ويعطي مخرجات عبر شاشة رقمية ومكبر صوت، ويتحكم بالجهاز في طبخ الطعام. هذا الحاسوب ليس قوياً بما يكفي لتشغيل مترجم، أو نظام ملفات، أو بيئة برمجية. قد يتطلب اكتشاف العلل والاختبار موارد حاسوبية أكبر من موارد الأنظمة المضمنة، ولهذا يحتمل أن تكون الترجمة المتعددة أقل تعقيداً وعرضة للأخطاء من الترجمة العادية.
في هذا الإطار، استخدام الآلات الافتراضية (مثل آلة جافا الافتراضية) يظهر بعض من أسباب تطوير المترجمات المتعددة.
وفي هذا الصدد، الاستخدام الأساسي للمترجم المتعدد هو فصل بيئة بناء الكود عن بيئة التنفيذ. وهذا مفيد في عدة مواقع:
في هذا الإطار، الترجمة في مجموعة خوادم.يشبه الترجمة في عدة أجهزة، يتطلب البناء المعقد عدة عمليات ترجمة يمكن أن تنفذ في أي جهاز غير مشغول بغض النظر عن بنيته التحتية ومكوناته المادية أو نسخة نظام التشغيل الذي يعمل عليه.
وفي هذا الصدد، الترجمة لعدة أجهزة، مثلًا، شركة تريد دعم إصدارات مختلفة من نظام تشغيل معين أو دعم عدة أنظمة تشغيل.باستخدام الترجمة المتعددة، يمكن أن تعمل الترجمة لهذه الأهداف بعملية بناء واحدة للبيئة.
ومن ناحية أخرى، ترجمة كود أصلي للمحاكيات لمنصات قديمة مثل أبل 2 من قبل المتحمسين الذين يستعملون الترجمة المتعددة والتي تعمل على منصة محددة (مثل المترجمات المتعددة أزتك 6502 (C's MS-DOS) والذي يعمل على ويندوز إكس بي).
وعلى صعيد آخر، إنشاء مترجم لمنصة جديدة.عندما تطور برنامج لمنصة جديدة، أو محاكي لمنصة مستقبلية، يستعمل المترجم المتعدد لترجمة الأدوات الضرورية مثل نظام التشغيل والمترجم الأصلي.
وصلات إضافية
إضافةً إلى ذلك، Cross Compilation Tools – مرجع في التعديل على أدوات غنو في الترجمة المتعددة
ومن جهة أخرى، buildroot هي مجموعة من السكربتات لبناء سلسلة أدوات تعتمد على (uClibc)،عادة لأجل الأنظمة المضمنة.مستعملة من قبل نظام (OpenWrt)
من جهة ثانية، Crosstool هو سلسلة أدوات من سكربتات، تنشأ بيئة مترجم متعدد على نظام لينكس لأجل معمارية معنية، من ضمنها الأنظمة المضمنة.
وعلى صعيد آخر، ELDK (Embedded Linux Development Kit). مستعملة من قبل داس يو بوت.
وعلى صعيد آخر، Grand Unified Builder (GUB) (خاص بنظام لينكس) مترجم متعدد وعابر للمعماريات مثل: وندوز32/ماك/فري بي أس دي/لينكس يستعمل من قبل ليلي بوند.
crosstool-NG هي أداة متعددة تساعد في بناء سلاسل الأدوات .
علاوةً على ذلك، Building Cross Toolchains with gcc هو أحد المراجع في المترجم المتعدد جي سي سي على شكل ويكي.
وعلى صعيد آخر، Scratchbox صندوق أدوات للمترجمات المتعددة من نظام لينكس إلى أي أر إم (ARM) وx86
من جهة ثانية، T2 SDE هي مجموعة من السكربتات لبناء أنظمة لينكس كاملة تعتمد على مكتبة سي غنو (GNU libC)، أو uClibc أو dietlibc لأجل معماريات مختلفة.
الأوائل-الثمانينيات
وعلى صعيد آخر، يملك مايكروسوفت فيجوال سي++ تاريخ طويل يعود إلى ثمانينيات القرن الماضي. صنع أول مترجم ميكروسوفت سي بواسطة نفس الشركة التي صنعت مترجم سي الشعري (Lattice C) وتم تغيير الماركة إلى ميكروسوفت، حتى تم إطلاق مايكروسوفت فيجوال سي++ 4، والذي يعتبر أول مترجم تصنعه ميكروسوفت بنفسها.
مراجع
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟