OnWorks Linux و Windows Online WorkStations

الشعار

استضافة مجانية على الإنترنت لمحطات العمل

<السابق | المحتويات | التالي>

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

قام أول تصميم لنا من دول مجلس التعاون الخليجي بتثبيت اثنين من رؤوس النظام الداخلية. عادة واحد منهم ، حدود. ح، سيشمل بدوره النظام المقابل حدود. ح رأس ، في هذه الحالة ، /tools/include/limits.h. ومع ذلك ، في وقت البناء الأول لدول مجلس التعاون الخليجي /tools/include/limits.h لم يكن موجودًا ، لذا فإن الرأس الداخلي الذي قام GCC بتثبيته هو ملف جزئي ومستقل ولا يتضمن الميزات الموسعة لرأس النظام. كان هذا مناسبًا لبناء libc المؤقت ، لكن هذا الإصدار من GCC يتطلب الآن الرأس الداخلي الكامل. قم بإنشاء إصدار كامل من الرأس الداخلي باستخدام أمر مماثل لما يفعله نظام الإنشاء GCC في الظروف العادية:


cat gcc / limitx.h gcc / glimits.h gcc / limity.h> \

`dirname $ ($ LFS_TGT-gcc -print-libgcc-file-name)` /include-fixed/limits.h

cat gcc / limitx.h gcc / glimits.h gcc / limity.h> \

`dirname $ ($ LFS_TGT-gcc -print-libgcc-file-name)` /include-fixed/limits.h

صورة

في 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

فعل

في حالة البناء على 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

كما هو الحال في البناء الأول لدول مجلس التعاون الخليجي ، فإنه يتطلب حزم GMP و MPFR و MPC. قم بفك ضغط كرات القطران وانقلها إلى أسماء الدلائل المطلوبة:


القطران -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 مليون قطعة


قم بإنشاء دليل بناء منفصل مرة أخرى:


mkdir -v بناء قرص مضغوط

mkdir -v بناء قرص مضغوط


قبل البدء في إنشاء GCC ، تذكر إلغاء تعيين أي متغيرات بيئة تتجاوز علامات التحسين الافتراضية. الآن تحضير GCC للتجميع:


CC = $ LFS_TGT-gcc \

CXX = LFS_TGT-g ++ دولار أمريكي \

AR = $ LFS_TGT-ar \

RANLIB = $ LFS_TGT- ranlib \

../تهيئة \

- البريفكس = / أدوات \

- مع بادئة محلية = / أدوات \

- with-native-system-header-dir = / tools / include \

- لغات قابلة للتمكين = c، c ++ \

--تعطيل- libstdcxx-pch \

--تعطيل multilib \

--تعطيل التمهيد \

--تعطيل - libgomp

CC = $ LFS_TGT-gcc \

CXX = LFS_TGT-g ++ دولار أمريكي \

AR = $ LFS_TGT-ar \

RANLIB = $ LFS_TGT- ranlib \

../تهيئة \

- البريفكس = / أدوات \

- مع بادئة محلية = / أدوات \

- with-native-system-header-dir = / tools / include \

- لغات قابلة للتمكين = c، c ++ \

--تعطيل- libstdcxx-pch \

--تعطيل multilib \

--تعطيل التمهيد \

--تعطيل - libgomp


معنى خيارات التكوين الجديدة:


- اللغات القابلة للتمكين = c، c ++

يضمن هذا الخيار بناء كل من مترجمي C و C ++.

--تعطيل-libstdcxx-pch

لا تقم ببناء الرأس المترجمة مسبقًا (PCH) لـ libstdc ++. إنها تشغل مساحة كبيرة ، ولا نستخدمها.

--تعطيل التمهيد

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

تجميع الحزمة:


جعل

جعل


قم بتثبيت الحزمة:


جعل تثبيت

جعل تثبيت


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


ln -sv gcc / tools / bin / cc

ln -sv gcc / tools / bin / cc


صورة

الحذر

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


صدى 'int main () {}'> dummy.c cc dummy.c

readelf -l a.out | grep ": / tools"

صدى 'int main () {}'> dummy.c cc dummy.c

readelf -l a.out | grep ": / tools"

إذا كان كل شيء يعمل بشكل صحيح ، فلن تكون هناك أخطاء ، وسيكون إخراج الأمر الأخير بالشكل:


[طلب مترجم البرنامج: /tools/lib64/ld-linux-x86-64.so.2]

[طلب مترجم البرنامج: /tools/lib64/ld-linux-x86-64.so.2]

لاحظ أن الرابط الديناميكي سيكون /tools/lib/ld-linux.so.2 لأجهزة 32 بت.

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

بمجرد أن يصبح كل شيء على ما يرام ، قم بتنظيف ملفات الاختبار:


rm -v dummy.c a.out

rm -v dummy.c a.out


أفضل الحوسبة السحابية لنظام التشغيل في OnWorks: