5.5.1. تركيب عبر دول مجلس التعاون الخليجي

تتطلب دول مجلس التعاون الخليجي الآن حزم GMP و MPFR و MPC. نظرًا لأن هذه الحزم قد لا يتم تضمينها في توزيع المضيف الخاص بك ، فسيتم إنشاؤها باستخدام GCC. قم بفك ضغط كل حزمة في دليل مصدر GCC وأعد تسمية الدلائل الناتجة بحيث تستخدمها إجراءات إنشاء GCC تلقائيًا:
ملاحظات
هناك سوء فهم متكرر حول هذا الفصل. الإجراءات هي نفسها مثل أي فصل آخر كما هو موضح سابقًا (تعليمات إنشاء الحزمة). قم أولاً باستخراج tarball gcc من دليل المصادر ثم قم بالتغيير إلى الدليل الذي تم إنشاؤه. عندها فقط يجب عليك متابعة التعليمات أدناه.
ملاحظات
هناك سوء فهم متكرر حول هذا الفصل. الإجراءات هي نفسها مثل أي فصل آخر كما هو موضح سابقًا (تعليمات إنشاء الحزمة). قم أولاً باستخراج tarball gcc من دليل المصادر ثم قم بالتغيير إلى الدليل الذي تم إنشاؤه. عندها فقط يجب عليك متابعة التعليمات أدناه.
القطران -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr
القطران -xf ../gmp-6.1.2.tar.xz mv -v gmp-6.1.2 gmp
tar -xf ../mpc-1.1.0.tar.gz mv -v mpc-1.1.0 مليون قطعة
القطران -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr
القطران -xf ../gmp-6.1.2.tar.xz mv -v gmp-6.1.2 gmp
tar -xf ../mpc-1.1.0.tar.gz mv -v mpc-1.1.0 مليون قطعة

في gcc / config / {linux، i386 / linux {، 64}}. h
في gcc / config / {linux، i386 / linux {، 64}}. h
$ file {،. orig} 's @ / lib \ (64 \) \؟ \ (32 \) \؟ / ld @ / tools & @ g' \
's @ / usr @ / tools @ g' $ file.orig> $ file
$ file {،. orig} 's @ / lib \ (64 \) \؟ \ (32 \) \؟ / ld @ / tools & @ g' \
's @ / usr @ / tools @ g' $ file.orig> $ file
سيغير الأمر التالي موقع الرابط الديناميكي الافتراضي الخاص بـ GCC لاستخدام الرابط المثبت فيه /أدوات. يزيل أيضا / البيرة / تتضمن من دول مجلس التعاون الخليجي تشمل مسار البحث. مشكلة:
لملف تفعل
cp -uv سيد -e
-e
لملف تفعل
cp -uv سيد -e
-e
صدى صوت '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/ tools / lib /"
#define STANDARD_STARTFILE_PREFIX_2 "" '>> $ file touch $ file.orig
فعل
صدى صوت '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/ tools / lib /"
#define STANDARD_STARTFILE_PREFIX_2 "" '>> $ file touch $ file.orig
فعل
في حالة ما إذا كان من الصعب اتباع ما ورد أعلاه ، فلنقم بتفصيله قليلاً. أولا نقوم بنسخ الملفات مجلس التعاون الخليجي / config / linux.h, gcc / config / i386 / linux.hو gcc / config / i368 / linux64.h إلى ملف يحمل نفس الاسم ولكن مع إضافة لاحقة ".orig". ثم يقوم التعبير sed الأول بإدخال "/ tools" إلى كل مثيل من "/ lib / ld" أو "/ lib64 / ld" أو "/ lib32 / ld" ، بينما يستبدل التعبير الثاني مثيلات "/ usr" المشفرة. بعد ذلك ، نضيف بيانات التعريف الخاصة بنا والتي تغير بادئة ملف البداية الافتراضية إلى نهاية الملف. لاحظ أن "/" اللاحقة في "/ tools / lib /" مطلوبة. أخيرًا ، نستخدم ملفات تواصل لتحديث الطابع الزمني على الملفات المنسوخة. عندما تستخدم بالتزامن مع وحدة المعالجة المركزية، فهذا يمنع التغييرات غير المتوقعة على الملفات الأصلية في حالة تشغيل الأوامر مرتين دون قصد.
أخيرًا ، في مضيفات x86_64 ، قم بتعيين اسم الدليل الافتراضي لمكتبات 64 بت على "lib":
حالة $ (uname -m) في x86_64)
sed -e '/ m64 = / s / lib64 / lib /' \
-i.orig gcc / config / i386 / t-linux64
;;
ESAC
حالة $ (uname -m) في x86_64)
sed -e '/ m64 = / s / lib64 / lib /' \
-i.orig gcc / config / i386 / t-linux64
;;
ESAC
توصي وثائق دول مجلس التعاون الخليجي ببناء دول مجلس التعاون الخليجي في دليل بناء مخصص:
mkdir -v بناء قرص مضغوط
mkdir -v بناء قرص مضغوط
تحضير دول مجلس التعاون الخليجي للتجميع:
../تهيئة \
- الهدف = $ LFS_TGT \
- البريفكس = / أدوات \
- مع إصدار glibc = 2.11 \
- مع sysroot = LFS دولار \
--مع- newlib \
- بدون رؤوس \
- مع بادئة محلية = / أدوات \
- with-native-system-header-dir = / tools / include \
--تعطيل- nls \
--تعطيل مشتركة \
--تعطيل multilib \
--تعطيل - عشري - تعويم
--تعطيل المواضيع \
--تعطيل - libatomic \
--تعطيل- libgomp \
--تعطيل- libquadmath \
--تعطيل- libssp \
--تعطيل- libvtv \
--تعطيل- libstdcxx \
- اللغات القابلة للتمكين = c، c ++
../تهيئة \
- الهدف = $ LFS_TGT \
- البريفكس = / أدوات \
- مع إصدار glibc = 2.11 \
- مع sysroot = LFS دولار \
--مع- newlib \
- بدون رؤوس \
- مع بادئة محلية = / أدوات \
- with-native-system-header-dir = / tools / include \
--تعطيل- nls \
--تعطيل مشتركة \
--تعطيل multilib \
--تعطيل - عشري - تعويم
--تعطيل المواضيع \
--تعطيل - libatomic \
--تعطيل- libgomp \
--تعطيل- libquadmath \
--تعطيل- libssp \
--تعطيل- libvtv \
--تعطيل- libstdcxx \
- اللغات القابلة للتمكين = c، c ++
معنى خيارات التكوين:
- مع newlib
نظرًا لعدم توفر مكتبة C عاملة بعد ، فإن هذا يضمن تحديد ثابت implit_libc عند إنشاء libgcc. هذا يمنع ترجمة أي كود يتطلب دعم libc.
- بدون رؤوس
عند إنشاء مترجم متقاطع كامل ، تتطلب GCC رؤوس معيارية متوافقة مع النظام المستهدف. لأغراضنا لن تكون هناك حاجة إلى هذه العناوين. يمنع رمز التبديل هذا GCC من البحث عنها.
- مع بادئة محلية = / أدوات
البادئة المحلية هي الموقع في النظام الذي سيبحث GCC عنه ملفات التضمين المثبتة محليًا. الافتراضي هو / البيرة / المحلية. ضبط هذا على /أدوات يساعد في الحفاظ على موقع المضيف لـ / البيرة / المحلية خارج مسار البحث في دول مجلس التعاون الخليجي.
--with-native-system-header-dir = / tools / include
بشكل افتراضي ، عمليات البحث في دول مجلس التعاون الخليجي / البيرة / تتضمن لرؤوس النظام. بالاقتران مع مفتاح sysroot ، هذا عادة ما يترجم إلى دولار LFS / usr / include. ومع ذلك ستنتقل الرؤوس التي سيتم تثبيتها في القسمين التاليين إلى LFS دولار / أدوات / تضمين. يضمن هذا التبديل أن مجلس التعاون الخليجي سيجدهم بشكل صحيح. في المرور الثاني لـ GCC ، سيضمن هذا التبديل نفسه عدم العثور على رؤوس من النظام المضيف.
--تعطيل مشترك
يجبر هذا التبديل مجلس التعاون الخليجي على ربط مكتباته الداخلية بشكل ثابت. نقوم بذلك لتجنب المشكلات المحتملة مع النظام المضيف.
- تعطيل-عشري-تعويم ، -تعطيل-خيوط ، -تعطيل-ليباتوميك ، -تعطيل- libgomp ، -تعطيل-libquadmath ، -تعطيل-libssp ، -تعطيل-libvtv ، -تعطيل- libstdcxx
تعمل هذه المفاتيح على تعطيل دعم امتداد الفاصلة العائمة ، والترابط ، والليباتوميك ، والليبغومب ،
مكتبة libquadmath و libssp و libvtv و C ++ القياسية على التوالي. ستفشل هذه الميزات في الترجمة عند إنشاء مترجم مشترك وليست ضرورية لمهمة التحويل البرمجي المتقاطع لـ libc المؤقت.
--تعطيل multilib
في x86_64 ، لا يدعم LFS تكوين multilib بعد. رمز التبديل هذا غير ضار لـ x86.
- اللغات القابلة للتمكين = c، c ++
يضمن هذا الخيار بناء مترجمي C و C ++ فقط. هذه هي اللغات الوحيدة المطلوبة الآن.
تجميع GCC عن طريق تشغيل:
جعل
جعل
التجميع اكتمل الآن. في هذه المرحلة ، سيتم تشغيل مجموعة الاختبار عادةً ، ولكن ، كما ذكرنا سابقًا ، لم يتم وضع إطار عمل مجموعة الاختبار بعد. فوائد إجراء الاختبارات في هذه المرحلة ضئيلة حيث سيتم استبدال البرامج من هذا المرور الأول قريبًا.
قم بتثبيت الحزمة:
جعل تثبيت
جعل تثبيت
توثيق