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

Ad


OnWorks فافيكون

distcc - على الإنترنت في السحابة

قم بتشغيل distcc في مزود استضافة OnWorks المجاني عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

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

برنامج:

اسم


distcc - مترجم C / C ++ / ObjC الموزع مع امتدادات مضخة distcc

موجز


com.distcc [مترجم والخيارات]

com.distcc [مترجم والخيارات]

[مترجم والخيارات]

com.distcc [ديستكك والخيارات]

الوصف


يوزع distcc تجميعًا لرمز C عبر عدة أجهزة على الشبكة. distcc
يجب أن يولد دائمًا نفس النتائج مثل الترجمة المحلية ، فمن السهل تثبيت و
use ، وغالبًا ما يكون أسرع بكثير من التجميع المحلي.

يشتمل هذا الإصدار على distcc العادي بالإضافة إلى تحسين يسمى وضع المضخة أو
مضخة distcc.

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

تتم عملية التجميع بواسطة جهاز العميل ، والذي يكون عادةً محطة عمل المطور
أو كمبيوتر محمول. يعمل عميل distcc على هذا الجهاز ، كما يفعل ، المعالج المسبق (if
لا يتم استخدام وضع مضخة distcc) والرابط والمراحل الأخرى من عملية الإنشاء. أي
عدد من الأجهزة المتطوعين بمثابة خوادم تجميع وتساعد العميل على بناء
البرنامج عن طريق تشغيل Distccd(1) daemon، C مترجم ومجمع حسب الحاجة.

يمكن تشغيل distcc عبر مآخذ TCP (على المنفذ 3632 افتراضيًا) ، أو عبر نفق
أمر مثل سه(1). بالنسبة لاتصالات TCP يجب على المتطوعين تشغيل ملف Distccd(1) عفريت
إما مباشرة أو من inetd. بالنسبة لاتصالات SSH ، يجب تثبيت distccd ولكن يجب
ليس أن تستمع للاتصالات.

يجب استخدام اتصالات TCP فقط على الشبكات الآمنة لعدم وجود مستخدم
المصادقة أو حماية رمز المصدر أو الهدف. عادة ما تكون اتصالات SSH 25٪
أبطأ بسبب حمل المعالج للتشفير ، على الرغم من أن هذا قد يختلف بشكل كبير
اعتمادًا على وحدات المعالجة المركزية والشبكة والبرنامج الذي يتم بناؤه.

تم تصميم distcc ليتم استخدامه مع GNU Make's -j الخيار الذي يدير عدة مترجم
عمليات متزامنة. ينشر distcc المهام عبر كل من وحدات المعالجة المركزية المحلية والبعيدة.
نظرًا لأن distcc قادر على توزيع معظم العمل عبر الشبكة ، فإن ملف
يمكن استخدام مستوى التزامن مقارنة بالبنيات المحلية. كقاعدة عامة ، فإن -j قيمنا
يجب تعيينه إلى حوالي ضعف العدد الإجمالي لوحدات المعالجة المركزية للخادم المتاحة ولكن تخضع لـ
قيود العميل. يتيح هذا الإعداد أقصى قدر من التشذير للمهام التي يتم حظرها
في انتظار القرص أو الشبكة IO. لاحظ أن distcc يمكن أن يعمل أيضًا مع عناصر تحكم أخرى في الإنشاء
أدوات ، مثل SCons ، حيث يجب تعديل إعدادات التزامن المماثلة.

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

في المقابل ، باستخدام وضع الضخ وقول 40 خادمًا ، يكون الإعداد -j80 أو قد يكون أكبر
مناسب حتى لعملاء وحدة المعالجة المركزية الواحدة.

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

بداية سريعة


1 لكل جهاز ، قم بتنزيل distcc و unpack و install.

2 على كل من الخوادم ، قم بتشغيل Distccd - ديمون مع --يسمح خيارات لتقييد
وصول.

3 ضع أسماء الخوادم في بيئتك:
$ export DISTCC_HOSTS = "مضيف محلي أحمر أخضر أزرق"

4 بناء!
$ make -j8 CC = distcc

بداية سريعة لأي مضخة ديستكك MODE


تابع على النحو الوارد أعلاه ، ولكن في الخطوة 3 ، حدد أن المضيفات البعيدة يجب أن تتحمل عبء
المعالجة المسبقة وأن الملفات المرسلة عبر الشبكة يجب أن تكون مضغوطة:

تصدير $ DISTCC_HOSTS = '- اختيار عشوائي للمضيف المحلي الأحمر ، cpp ، lzo green ، cpp ، lzo
الأزرق ، cpp ، lzo '

- عشوائيا يفرض الخيار استخدامًا موحدًا لخوادم الترجمة. بينما ستحصل
يستفيد البعض من وضع ضخ distcc مع عدد قليل من الخوادم فقط ، وتحصل على فائدة متزايدة
مع المزيد من وحدات المعالجة المركزية للخادم (حتى المئات!). لف جهازك داخل أمر المضخة ،
هنا بافتراض 10 خوادم:

$ distcc-Pump make -j20 CC = distcc

HOW جلي (بدون مضخة) ديستك WORKS


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

يأخذ المترجم والمجمع ملف إدخال واحد فقط (المصدر المعالج مسبقًا) و
ينتج مخرجات واحدة (ملف الكائن). يقوم distcc بشحن هذين الملفين عبر امتداد
شبكة وبالتالي يمكن تشغيل المترجم / المجمّع عن بعد.

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

يقوم distcc بفحص سطر الأوامر الخاص به لتحديد أي من هذه المراحل يتم استدعاءه ، و
ما إذا كان يمكن توزيع الوظيفة.

HOW مضخة ديستكك MODE WORKS


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

في وضع distcc-pump ، يقوم الخادم بفك حزم مجموعة جميع الملفات المصدر في ملف مؤقت
الدليل ، الذي يحتوي على شجرة الدليل التي تعكس الجزء من نظام الملفات الذي
ذات صلة بالمعالجة المسبقة ، بما في ذلك الروابط الرمزية.

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

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

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

نظرًا لأن distcc في وضع المضخة قادر على دفع الملفات أسرع بنحو عشر مرات ، قم ببناء ملفات
قد تزيد السرعة ثلاث مرات أو أكثر للإصدارات الكبيرة مقارنة بوضع التوزيع العادي.

القيود لأي تضخ MODE


يتطلب استخدام وضع الضخ كلاً من العميل والخوادم استخدام الإصدار 3.0 أو أحدث من distcc و
distccd (على التوالي).

يعتمد تحليل التضمين الإضافي لوضع مضخة التوزيع على الافتراض الأساسي
لا تتغير ملفات المصدر والرأس أثناء عملية الإنشاء. عدد قليل من البناء المعقد
لا تلبي الأنظمة ، مثل نظام Linux kernel 2.6 ، هذا المطلب تمامًا. ل
التغلب على مثل هذه القضايا ، وحالات الزاوية الأخرى مثل مسارات الملفات المطلقة في يشمل ، انظر
ال include_server(1) صفحة رجل.

افتراض مهم آخر هو أن تكوين التضمين لجميع الأجهزة يجب أن يكون
تطابق. وبالتالي يجب أن تكون الرؤوس الموجودة ضمن مسار النظام الافتراضي هي نفسها على جميع الخوادم
وجميع العملاء. إذا تم استخدام تثبيت مترجم GNU القياسي ، فهذا المطلب
ينطبق على جميع المكتبات التي تم تثبيت ملفات رأسها ضمن / البيرة / تتضمن or
/ usr / local / include /. لاحظ أن تثبيت حزم البرامج غالبًا ما يؤدي إلى المزيد
يتم وضع ملفات الرؤوس في الدلائل الفرعية لأي منهما.

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

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

رؤية include_server(1) دليل لمزيد من المعلومات عن أعراض وأسباب الانتهاكات
من افتراضات وضع distcc- مضخة.

OPTION ملخص


يتم تفسير معظم الخيارات التي تم تمريرها إلى distcc كخيارات للمترجم. الخيارات التالية
يتم فهمها من خلال distcc نفسها. إذا تم تحديد أي من هذه الخيارات ، فلن يتم توزيع distcc
استدعاء المترجم.

--مساعدة يعرض تعليمات موجزة.

--الإصدار
يعرض إصدار عميل distcc.

--مضيفي العرض
يعرض قائمة المضيف التي سيستخدمها distcc. انظر قسم مواصفات المضيف.

- المسح يشمل
يعرض قائمة الملفات التي يرسلها distcc إلى الآلة البعيدة ، مثل
يحسبها خادم التضمين. هذا تقدير متحفظ (زائد) لـ
الملفات التي سيقرأها مترجم C. هذا الخيار يعمل فقط في وضع المضخة.
راجع قسم "How Distcc-pump Mode Works" للحصول على تفاصيل حول كيفية حساب ذلك.

إخراج القائمة بواسطة com.distcc - المسح يشمل سيحتوي على إدخال واحد في كل سطر. كل
يحتوي السطر على فئة متبوعة بمسار. الفئة واحدة من FILE ، SYMLINK ،
الدليل أو SYSTEMDIR:

FILE يشير إلى ملف المصدر أو ملف الرأس الذي سيتم إرساله إلى خادم distcc
مضيف.

سيملينك يشير إلى ارتباط رمزي سيتم إرساله إلى مضيف خادم distcc.

الدليل يشير إلى الدليل الذي قد يكون ضروريًا لتجميع المصدر
ملف. على سبيل المثال ، قد تكون هناك حاجة إلى دليل "foo" بسبب تضمين الامتداد
شكل # تضمين "foo /../ bar.h". سيتم إنشاء مثل هذه الدلائل على distcc
الخادم المضيف.

SYSTEMDIR يشير إلى وجود نظام يتضمن دليل ، أي دليل موجود على
تضمين المسار الافتراضي للمترجم ، مثل "/ البيرة / تتضمن"؛ هذه الدلائل
من المفترض أن يكون موجودًا على مضيف خادم distcc ، وبالتالي لن يتم إرساله إلى ملف
مضيف خادم distcc.

-j يعرض مستوى التزامن في distcc ، كما هو محسوب من قائمة المضيف ؛ انها
الحد الأقصى لعدد الوظائف المعلقة التي يصدرها هذا العميل لجميع الخوادم. بواسطة
سيكون هذا افتراضيًا أربعة أضعاف عدد المضيفين في قائمة المضيف ، ما لم يكن
/ تم استخدام خيار LIMIT في قائمة المضيف. انظر قسم مواصفات المضيف.

التثبيت ديستك


هناك ثلاث طرق مختلفة لاستدعاء distcc ، لتناسب الظروف المختلفة:

يمكن تثبيت distcc تحت اسم المترجم الحقيقي ، لاعتراض المكالمات إلى
وتشغيلها عن بعد. هذا المترجم "المتنكر" لديه أوسع توافق
مع أشجار المصدر الموجودة ، ويكون مناسبًا عندما تريد استخدام distcc للجميع
التحويل البرمجي. حقيقة أن distcc يتم استخدامها هي حقيقة لملفات makefiles.

يمكن إضافة distcc إلى أسطر أوامر المترجم ، مثل "distcc cc -c hello.c"
أو CC = "distcc gcc". هذا مناسب عندما تريد استخدام distcc للبعض فقط
التجميعات أو تجربتها ، ولكن يمكن أن تسبب مشكلة مع بعض ملفات makefiles أو
إصدارات libtool التي تفترض أن $ CC لا تحتوي على مسافة.

أخيرًا ، يمكن استخدام distcc مباشرة كمترجم. يتم استخدام "cc" دائمًا على أنه ملف
اسم المترجم الحقيقي في هذا الوضع "الضمني". يمكن أن يكون هذا مناسبًا لـ
الاستخدام التفاعلي عندما لا يعمل الوضع "الصريح" ولكن لا ينصح به حقًا
للاستخدام الجديد.

تذكر أنه لا يجب عليك استخدام طريقتين للاتصال distcc في نفس الوقت. اذا أنت
تستخدم دليل masquerade ، لا تغير CC و / أو CXX ، فقط ضع الدليل مبكرًا
على مسارك. إذا كنت لا تستخدم دليل masquerade ، فستحتاج إما إلى تغيير CC
و / أو CXX ، أو تعديل ملف (ملفات) makef لاستدعاء distcc صراحةً.

يتنكر


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

فمثلا:

# mkdir / usr / lib / distcc / bin
# cd / usr / lib / distcc / bin
# ln -s ../../../bin/distcc gcc
# ln -s ../../../bin/distcc cc
# ln -s ../../../bin/distcc g ++
# ln -s ../../../bin/distcc c ++

ثم ، لاستخدام distcc ، يحتاج المستخدم فقط إلى وضع الدليل / usr / lib / distcc / bin في وقت مبكر
المسار ، وقمنا بتعيين قائمة مضيف في DISTCC_HOSTS أو ملف. سوف يتعامل distcc مع ملف
بقية.

لاحظ أن دليل masquerade هذا يجب أن يحدث في PATH قبل الدليل الذي
يحتوي على المجمعين الفعليين لنفس الأسماء ، وأن أي برامج مساعدة
يجب أيضًا العثور على استدعاء المترجمين (مثل مثل أو ld) في المسار في الدليل
بعد دليل masquerade منذ أن استدعى distcc المترجم الحقيقي باستخدام PATH
القيمة التي تحتوي على كل الدليل حتى ويتضمن دليل masquerade تم اقتطاعه.

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

يمكن تجنب الأخطاء العودية باستخدام البرامج النصية shell بدلاً من الارتباطات. على سبيل المثال ، في
/ usr / lib / distcc / bin قم بإنشاء ملف cc يحتوي على:

#!/ بن / ش
distcc / usr / bin / مجلس التعاون الخليجي "$ @"

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

باستخدام ديستك مع كاش


ccache هو برنامج يسرع بناء البرامج عن طريق التخزين المؤقت لنتائج التجميعات.
عادةً ما يتم استدعاء ccache قبل distcc ، بحيث يتم استرداد النتائج من ملف
مخبأ. قد تكون هناك حاجة لبعض التجارب لعمل ملفات ميكانيكية خاصة
كل شيء يعمل معًا.

الطريقة الأكثر موثوقية هي الضبط

CCACHE_PREFIX = "distcc"

هذا يخبر ذاكرة التخزين المؤقت بتشغيل distcc كغلاف حول المترجم الحقيقي. لا يزال يستخدم ذاكرة التخزين المؤقت
المترجم الحقيقي لاكتشاف ترقيات المترجم.

يمكن بعد ذلك تشغيل ccache باستخدام دليل masquerade or عن طريق الإعداد

CC = "ذاكرة التخزين المؤقت مجلس التعاون الخليجي"

اعتبارًا من الإصدار 2.2 ، لا تقوم ذاكرة التخزين المؤقت بالتخزين المؤقت للتجميع من المصدر المعالج مسبقًا وكذلك الأمر
لا تحصل أبدًا على ذاكرة تخزين مؤقت إذا تم تشغيلها من distccd أو distcc. يجب تشغيله فقط على
من جانب العميل وقبل distcc ليكون أي استخدام.

وضع مضخة distcc غير متوافق مع ذاكرة التخزين المؤقت.

HOST المواصفات


تخبر "قائمة المضيف" distcc بالآلات التي يجب استخدامها للتجميع. بالترتيب ، يبدو distcc
في ال DISTCC_HOSTS دولار متغير البيئة ، للمستخدم DISTCC_DIR دولار / مضيف ملف و
ملف مضيف على مستوى النظام. إذا لم يتم العثور على قائمة مضيفين ، يرسل distcc تحذيرًا ويقوم بالتجميع
محليا.

قائمة المضيف هي قائمة بسيطة بمواصفات المضيف مفصولة بمسافات بيضاء. الابسط
والشكل الأكثر شيوعًا هو أسماء المضيف ، مثل

مؤسسة الكوثر أحمر لون أخضر أزرق

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

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

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

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

أخيرا هناك دخول المضيف

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

بناء الجملة هو

DISTCC_HOSTS = هوستسبيك ...
هوستسبيك = LOCAL_HOST | SSH_HOST | TCP_HOST | OLDSTYLE_TCP_HOST
| GLOBAL_OPTION
| زيروكونف
LOCAL_HOST = مضيف محلي [/ LIMIT]
| --localslots =
| --localslots_cpp =
SSH_HOST = [USER]HOSTID [/ LIMIT] [: COMMAND] [OPTIONS]
TCP_HOST = HOSTID [: PORT] [/ LIMIT] [OPTIONS]
OLDSTYLE_TCP_HOST = HOSTID [/ LIMIT] [: PORT] [OPTIONS]
المضيف = اسم المضيف | IPV4 | IPV6
OPTIONS = ، OPTION [OPTIONS]
الخيار = lzo | CPP
GLOBAL_OPTION = - ترتيب عشوائي
ZEROCONF = + أصفار

فيما يلي بعض الأمثلة الفردية لبناء الجملة:

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

IPV6 عنوان IPv6 حرفي محاط بأقواس مربعة ، مثل [:: 1]

IPV4 عنوان IPv4 حرفي ، مثل 10.0.0.1

HOSTNAME
اسم مضيف يتم البحث عنه باستخدام المحلل.

:ميناء اتصل برقم منفذ عشري محدد ، بدلاً من الافتراضي 3632.

HOSTID
اتصل بالمضيف عبر SSH ، بدلاً من TCP. يمكن لخيارات اتصال SSH
سيتم تحديدها في ~ / .ssh / التكوين

مستخدم@ اتصل بالمضيف عبر SSH كاسم مستخدم محدد.

:يأمر
قم بالاتصال عبر SSH ، واستخدم مسارًا محددًا للعثور على خادم distccd. هذا هو
عادة ما تكون مطلوبة فقط إذا لم تتمكن من تثبيت distccd في دليل لسبب ما
على المسار الافتراضي لاتصالات SSH. استخدم هذا إذا ظهرت لك أخطاء مثل "distccd:
الأمر غير موجود "في وضع SSH.

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

، lzo لتمكين ضغط LZO لمضيف TCP أو SSH هذا.

، حزب الشعب يُمكّن وضع مضخة التوزيع لهذا المضيف. ملاحظة: يجب تغليف أمر الإنشاء
البرنامج النصي لمضخة distcc لبدء تشغيل خادم التضمين.

- عشوائيا
قم بترتيب قائمة المضيف عشوائيًا قبل التنفيذ.

+ أصفار
هذه خيار is فقط متاح if com.distcc وكان جمعت مع أفاهي الدعم تمكين at
تكوين مرة. عندما يكون هذا الإدخال الخاص موجودًا في قائمة المضيفين ، فإن distcc سوف
استخدم Avahi Zeroconf DNS Service Discovery (DNS-SD) لتحديد موقع أي توزيع متاح
خوادم على الشبكة المحلية. هذا يتجنب الحاجة إلى قائمة المضيف صراحة
أسماء أو عناوين IP لأجهزة خادم distcc. يجب أن تحتوي خوادم distccd على ملفات
باستخدام خيار "--zeroconf" لتوزيع البيانات. التحذير المهم هو ذلك
في التنفيذ الحالي ، سيتم وضع الضخ ("، cpp") والضغط ("، lzo")
لا تستخدم أبدًا للمضيفين الموجودين عبر zeroconf.

إليك مثال يوضح بعض الاحتمالات:

المضيف المحلي / 2 @ bigman / 16: / opt / bin / distccd الجهاز القديم: 4200/1
# كارتمان is إلى أسفل
بعيد / 3 ، lzo

يسمح بالتعليقات في مواصفات المضيف. تبدأ التعليقات بعلامة التجزئة / الجنيه (#)
وركض حتى نهاية السطر.

إذا كان مضيف في القائمة لا يمكن الوصول إليه ، فسيصدر distcc تحذيرًا ويتجاهل هذا المضيف لـ
حوالي دقيقة واحدة.

COMPRESSION


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

يؤدي تمكين الضغط إلى جعل عميل وخادم distcc يستخدمان وقتًا أطول لوحدة المعالجة المركزية ، ولكن أقل
ازدحام انترنت. الوقت الإضافي لوحدة المعالجة المركزية غير مهم لوضع الضخ. الضغط
النسبة عادة 4: 1 للمصدر و 2: 1 لكود الهدف.

يتطلب استخدام الضغط كلاً من العميل والخادم استخدام الإصدار 2.9 على الأقل من distcc.
لا يلزم تكوين خادم: يستجيب الخادم دائمًا بردود مضغوطة على
طلبات مضغوطة.

يتطلب وضع المضخة تشغيل الخوادم على خيار مضيف lzo.

ابحث مسارات


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

com.distcc /usr/local/bin/gcc-3.1415 -c مرحبًا ج

إذا لم يكن اسم المترجم مطلقًا أو غير مؤهل تمامًا ، فسيتم البحث عن مسار distccd's PATH.
عند تشغيل distcc من دليل masquerade ، يكون الاسم الأساسي للمترجم هو فقط
مستخدم. يتم استخدام PATH الخاص بالعميل فقط لتشغيل المعالج وليس له أي تأثير على
مسار الخادم.

المهلة


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

المهلات غير قابلة للتكوين في الوقت الحاضر.

DIAGNOSTICS


يتم تمرير رسائل الخطأ أو التحذيرات من برامج التحويل البرمجي المحلية أو البعيدة إلى التشخيص
الإخراج على العميل.

يمكن أن يوفر distcc معلومات تصحيح أخطاء شاملة عند استخدام الخيار المطوّل. هذا
يسيطر عليها DISTCC_VERBOSE متغير البيئة على العميل ، و - الإسراف
الخيار على الخادم. لاستكشاف الأخطاء وإصلاحها ، افحص خطأ كل من العميل والخادم
الرسائل.

EXIT الرموز


عادةً ما يكون كود الخروج من distcc هو رمز المترجم: صفر للترجمة الناجحة
وغير الصفر خلاف ذلك.

يميز distcc بين الأخطاء "الحقيقية" مثل خطأ في بناء الجملة في المصدر ، و
أخطاء "عرضية" مثل مشكلة في التواصل مع متطوع. في القضية
من الأخطاء العرضية ، سيحاول distcc التجميع محليًا ما لم يتم DISTCC_FALLBACK
تم تعطيل الخيار.

إذا خرج المترجم بإشارة ، فسيقوم distcc بإرجاع رمز خروج 128 بالإضافة إلى الإشارة
عدد.

تتسبب الأخطاء الداخلية في distcc في ظهور رمز خروج بين 100 و 127. على وجه الخصوص

100 فشل التوزيع العام.

101 الحجج السيئة.

102 فشل الربط.

103 فشل الاتصال.

104 تحطمت المترجم.

105 نفاد الذاكرة.

106 مضيف سيئ المواصفات

107 خطأ I / O

108 مقطوع.

109 خطأ بروتوكول.

110 لم يتم العثور على المترجم المحدد في المضيف البعيد. تحقق من تعيين $ CC
بشكل مناسب وأنه تم تثبيته في دليل على مسار البحث عن
Distccd.

111 نداء متكرر الى distcc.

112 فشل في تجاهل الامتيازات.

113 تم رفض الوصول إلى الشبكة.

114 قيد الاستخدام بواسطة عملية أخرى.

115 لا يوجد مثل هذا الملف.

116 لم يتم تعريف المضيفين وتعطيل العناصر الاحتياطية.

118 مهلة.

استخدم distcc عبر الإنترنت باستخدام خدمات onworks.net


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

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

أوامر لينكس

Ad