OnWorks Linux ແລະ Windows Online WorkStations

Logo

ໂຮດຕິ້ງອອນໄລນ໌ຟຣີສໍາລັບ WorkStations

<Previous | ເນື້ອໃນ | ຕໍ່ໄປ>

5.5.1. ການຕິດຕັ້ງ Cross GCC

ຮູບພາບເລັກນ້ອຍ

ໃນປັດຈຸບັນ GCC ຕ້ອງການແພັກເກດ GMP, MPFR ແລະ MPC. ເນື່ອງຈາກແພັກເກດເຫຼົ່ານີ້ອາດຈະບໍ່ລວມຢູ່ໃນການແຈກຢາຍເຈົ້າພາບຂອງເຈົ້າ, ພວກມັນຈະຖືກສ້າງດ້ວຍ GCC. ຖອດຊຸດແຕ່ລະແພັກເກັດເຂົ້າໄປໃນໄດເລກະທໍລີແຫຼ່ງ GCC ແລະປ່ຽນຊື່ໄດເລກະທໍລີຜົນໄດ້ຮັບເພື່ອໃຫ້ຂະບວນການສ້າງ GCC ຈະໃຊ້ພວກມັນໂດຍອັດຕະໂນມັດ:


ຫມາຍ​ເຫດ​

ມີຄວາມເຂົ້າໃຈຜິດເລື້ອຍໆກ່ຽວກັບບົດນີ້. ຂັ້ນ​ຕອນ​ການ​ແມ່ນ​ຄື​ກັນ​ກັບ​ທຸກ​ບົດ​ອື່ນໆ​ທີ່​ອະ​ທິ​ບາຍ​ກ່ອນ​ຫນ້າ​ນີ້ (ຄໍາ​ແນະ​ນໍາ​ການ​ສ້າງ​ຊຸດ​)​. ທໍາອິດສະກັດ gcc tarball ຈາກໄດເລກະທໍລີແຫຼ່ງຂໍ້ມູນແລະຫຼັງຈາກນັ້ນປ່ຽນໄປຫາໄດເລກະທໍລີທີ່ສ້າງ. ພຽງແຕ່ຫຼັງຈາກນັ້ນທ່ານຄວນດໍາເນີນການກັບຄໍາແນະນໍາຂ້າງລຸ່ມນີ້.

ຫມາຍ​ເຫດ​

ມີຄວາມເຂົ້າໃຈຜິດເລື້ອຍໆກ່ຽວກັບບົດນີ້. ຂັ້ນ​ຕອນ​ການ​ແມ່ນ​ຄື​ກັນ​ກັບ​ທຸກ​ບົດ​ອື່ນໆ​ທີ່​ອະ​ທິ​ບາຍ​ກ່ອນ​ຫນ້າ​ນີ້ (ຄໍາ​ແນະ​ນໍາ​ການ​ສ້າງ​ຊຸດ​)​. ທໍາອິດສະກັດ gcc tarball ຈາກໄດເລກະທໍລີແຫຼ່ງຂໍ້ມູນແລະຫຼັງຈາກນັ້ນປ່ຽນໄປຫາໄດເລກະທໍລີທີ່ສ້າງ. ພຽງແຕ່ຫຼັງຈາກນັ້ນທ່ານຄວນດໍາເນີນການກັບຄໍາແນະນໍາຂ້າງລຸ່ມນີ້.


tar -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr

tar -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 mpc

tar -xf ../mpfr-4.0.2.tar.xz mv -v mpfr-4.0.2 mpfr

tar -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 mpc

ຮູບພາບເລັກນ້ອຍ

ໃນ 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 ເພື່ອໃຊ້ອັນທີ່ຕິດຕັ້ງຢູ່ໃນ / ເຄື່ອງ​ມື​. ມັນຍັງເອົາອອກ / usr / ປະກອບມີ ຈາກ GCC ຂອງປະກອບມີເສັ້ນທາງຄົ້ນຫາ. ບັນຫາ:


ສໍາລັບໄຟລ໌ເຮັດ

cp -uv sed -e

-e

ສໍາລັບໄຟລ໌ເຮັດ

cp -uv sed -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 ແຕະ $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 ແຕະ $file.orig

ເຮັດ

ໃນກໍລະນີທີ່ຂ້າງເທິງເບິ່ງຄືວ່າຍາກທີ່ຈະປະຕິບັດຕາມ, ໃຫ້ພວກເຮົາທໍາລາຍມັນລົງເລັກນ້ອຍ. ທໍາອິດພວກເຮົາຄັດລອກໄຟລ໌ gcc/config/linux.h, gcc/config/i386/linux.h, ແລະ gcc/config/i368/linux64.h ໄປຫາໄຟລ໌ທີ່ມີຊື່ດຽວກັນແຕ່ມີຄຳຕໍ່ທ້າຍຂອງ “.orig”. ຫຼັງຈາກນັ້ນ, ການສະແດງອອກ sed ທໍາອິດ prepends “/tools” ກັບທຸກໆຕົວຢ່າງຂອງ “/lib/ld”, “/lib64/ld” ຫຼື “/lib32/ld”, ໃນຂະນະທີ່ອັນທີສອງປ່ຽນແທນຕົວຢ່າງທີ່ຍາກຂອງ “/usr”. ຕໍ່ໄປ, ພວກເຮົາເພີ່ມຄໍາກໍານົດຂອງພວກເຮົາທີ່ປ່ຽນແປງຄໍານໍາຫນ້າ startfile ໃນຕອນທ້າຍຂອງໄຟລ໌. ຈື່ໄວ້ວ່າ "/" ໃນ "/tools/lib/" ແມ່ນຕ້ອງການ. ສຸດທ້າຍ, ພວກເຮົາໃຊ້ ສໍາຜັດ ເພື່ອອັບເດດເວລາໃນໄຟລ໌ທີ່ສຳເນົາໄວ້. ເມື່ອໃຊ້ຮ່ວມກັບ cp -u, ນີ້ປ້ອງກັນການປ່ຽນແປງທີ່ບໍ່ຄາດຄິດກັບໄຟລ໌ຕົ້ນສະບັບໃນກໍລະນີທີ່ຄໍາສັ່ງຖືກດໍາເນີນການສອງຄັ້ງໂດຍບໍ່ໄດ້ຕັ້ງໃຈ.


ສຸດທ້າຍ, ໃນ x86_64 hosts, ຕັ້ງຊື່ໄດເລກະທໍລີເລີ່ມຕົ້ນສໍາລັບຫ້ອງສະຫມຸດ 64-bit ເປັນ "lib":


ກໍລະນີ $(uname -m) ໃນ x86_64)

sed -e '/m64=/s/lib64/lib/' \

-i.orig gcc/config/i386/t-linux64

;;

ວ່າ C

ກໍລະນີ $(uname -m) ໃນ x86_64)

sed -e '/m64=/s/lib64/lib/' \

-i.orig gcc/config/i386/t-linux64

;;

ວ່າ C

ເອກະສານ GCC ແນະນໍາໃຫ້ສ້າງ GCC ໃນໄດເລກະທໍລີສ້າງສະເພາະ:


mkdir -v build cd build

mkdir -v build cd build

ກະກຽມ GCC ສໍາລັບການລວບລວມ:


../configure \

--target=$LFS_TGT \

--prefix=/ເຄື່ອງ​ມື \

--with-glibc-version=2.11 \

--with-sysroot=$LFS \

--with-newlib \

--ບໍ່ມີສ່ວນຫົວ \

--with-local-prefix=/ເຄື່ອງ​ມື \

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

--disable-nls \

--disable-shared \

--disable-multilib \

--disable-decimal-float \

--disable-threads \

--disable-libatomic \

--disable-libgomp \

--disable-libquadmath \

--disable-libssp \

--disable-libvtv \

--disable-libstdcxx \

--enable-languages=c,c++

../configure \

--target=$LFS_TGT \

--prefix=/ເຄື່ອງ​ມື \

--with-glibc-version=2.11 \

--with-sysroot=$LFS \

--with-newlib \

--ບໍ່ມີສ່ວນຫົວ \

--with-local-prefix=/ເຄື່ອງ​ມື \

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

--disable-nls \

--disable-shared \

--disable-multilib \

--disable-decimal-float \

--disable-threads \

--disable-libatomic \

--disable-libgomp \

--disable-libquadmath \

--disable-libssp \

--disable-libvtv \

--disable-libstdcxx \

--enable-languages=c,c++

ຄວາມຫມາຍຂອງຕົວເລືອກການຕັ້ງຄ່າ:


--with-newlib

ເນື່ອງຈາກຫ້ອງສະຫມຸດ C ທີ່ເຮັດວຽກຍັງບໍ່ທັນມີ, ນີ້ຮັບປະກັນວ່າຄົງທີ່ inhibit_libc ຖືກກໍານົດໃນເວລາທີ່ສ້າງ libgcc. ນີ້ປ້ອງກັນການລວບລວມລະຫັດໃດໆທີ່ຕ້ອງການການສະຫນັບສະຫນູນ libc.

-- ບໍ່ມີສ່ວນຫົວ

ເມື່ອສ້າງ cross-compiler ຄົບຖ້ວນ, GCC ຕ້ອງການ headers ມາດຕະຖານທີ່ເຫມາະສົມກັບລະບົບເປົ້າຫມາຍ. ສໍາລັບຈຸດປະສົງຂອງພວກເຮົາ headers ເຫຼົ່ານີ້ຈະບໍ່ຈໍາເປັນ. ສະວິດນີ້ປ້ອງກັນບໍ່ໃຫ້ GCC ຊອກຫາພວກມັນ.

--with-local-prefix=/ເຄື່ອງມື

ຄໍານໍາຫນ້າທ້ອງຖິ່ນແມ່ນສະຖານທີ່ຢູ່ໃນລະບົບທີ່ GCC ຈະຄົ້ນຫາສໍາລັບໄຟລ໌ທີ່ຕິດຕັ້ງຢູ່ໃນທ້ອງຖິ່ນ. ຄ່າເລີ່ມຕົ້ນແມ່ນ / usr/ທ້ອງຖິ່ນ. ການ​ຕັ້ງ​ຄ່າ​ນີ້​ເປັນ​ / ເຄື່ອງ​ມື​ ຊ່ວຍຮັກສາສະຖານທີ່ເຈົ້າພາບຂອງ / usr / ທ້ອງຖິ່ນ ອອກຈາກເສັ້ນທາງຄົ້ນຫາຂອງ GCC ນີ້.


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

ໂດຍການຊອກຫາ GCC ເລີ່ມຕົ້ນ / usr / ປະກອບມີ ສໍາລັບສ່ວນຫົວຂອງລະບົບ. ໂດຍສົມທົບກັບສະວິດ sysroot, ນີ້ປົກກະຕິຈະແປເປັນ $LFS/usr/ລວມ. ຢ່າງໃດກໍ່ຕາມ headers ທີ່ຈະຖືກຕິດຕັ້ງໃນສອງພາກຕໍ່ໄປຈະໄປຫາ $LFS/ເຄື່ອງມື/ຮວມ. ສະວິດນີ້ຮັບປະກັນວ່າ gcc ຈະຊອກຫາພວກມັນຢ່າງຖືກຕ້ອງ. ໃນການຜ່ານຄັ້ງທີສອງຂອງ GCC, ສະຫຼັບດຽວກັນນີ້ຈະຮັບປະກັນວ່າບໍ່ມີສ່ວນຫົວຈາກລະບົບເຈົ້າພາບ.

--disable-shared

ສະຫຼັບນີ້ບັງຄັບໃຫ້ GCC ເຊື່ອມຕໍ່ຫ້ອງສະໝຸດພາຍໃນຂອງຕົນຢ່າງສະຖິດ. ພວກເຮົາເຮັດສິ່ງນີ້ເພື່ອຫຼີກເວັ້ນບັນຫາທີ່ເປັນໄປໄດ້ກັບລະບົບເຈົ້າພາບ.

--disable-decimal-float, --disable-thread, --disable-libatomic, --disable- libgomp, --disable-libquadmath, --disable-libssp, --disable-libvtv, --disable- libstdcxx

ສະຫຼັບເຫຼົ່ານີ້ປິດການຮອງຮັບການຂະຫຍາຍຈຸດເລື່ອນເລກຖານສິບ, threading, libatomic, libgomp,

libquadmath, libssp, libvtv, ແລະຫ້ອງສະໝຸດມາດຕະຖານ C++ ຕາມລຳດັບ. ລັກສະນະເຫຼົ່ານີ້ຈະລົ້ມເຫລວໃນການລວບລວມໃນເວລາທີ່ສ້າງ cross-compiler ແລະບໍ່ຈໍາເປັນສໍາລັບວຽກງານຂອງ cross-compiler libc ຊົ່ວຄາວ.

--disable-multilib

ໃນ x86_64, LFS ຍັງບໍ່ຮອງຮັບການຕັ້ງຄ່າ multilib ເທື່ອ. ສະວິດນີ້ບໍ່ເປັນອັນຕະລາຍຕໍ່ x86.

--enable-languages=c,c++

ທາງ​ເລືອກ​ນີ້​ເຮັດ​ໃຫ້​ແນ່​ໃຈວ່​າ​ພຽງ​ແຕ່ C ແລະ C ++ compilers ໄດ້​ຖືກ​ສ້າງ​ຂຶ້ນ​. ເຫຼົ່ານີ້ແມ່ນພາສາດຽວທີ່ຕ້ອງການໃນປັດຈຸບັນ.

ລວບລວມ GCC ໂດຍການແລ່ນ:


ເຮັດໃຫ້

ເຮັດໃຫ້

ການລວບລວມຂໍ້ມູນແມ່ນສໍາເລັດແລ້ວ. ໃນຈຸດນີ້, ຊຸດທົດສອບປົກກະຕິຈະດໍາເນີນການ, ແຕ່, ດັ່ງທີ່ໄດ້ກ່າວມາກ່ອນ, ກອບຊຸດທົດສອບຍັງບໍ່ທັນມີຢູ່. ຜົນປະໂຫຍດຂອງການແລ່ນການທົດສອບຢູ່ໃນຈຸດນີ້ແມ່ນຫນ້ອຍເພາະວ່າໂຄງການຈາກຄັ້ງທໍາອິດນີ້ຈະຖືກປ່ຽນແທນໃນໄວໆນີ້.

ຕິດຕັ້ງຊຸດ:


ເຮັດໃຫ້ຕິດຕັ້ງ

ເຮັດໃຫ້ຕິດຕັ້ງ

OS Cloud Computing ຍອດນິຍົມຢູ່ OnWorks: