LFS: Compile Cross-toolchain: Difference between revisions
m SanzSkuy moved page Compile Cross-toolchain to LFS: Compile Cross-toolchain |
|
(No difference)
| |
Revision as of 06:34, 16 April 2025
Sebelum mengcompile, pastikan:
- Sudah melakukan langkah-langkah sebelumnya
- Login sebagai user lfs
- Work directory di
/mnt/lfs/sources/ - Ketika compile package:
- Menggunakan
taruntuk extract package - Pindah ke direktori hasil extract
- Ikutin instruksi
- Balik ke direktori
sourceketika compile sudah selesai - Delete hasil extract, kecuali kalo gak disuruh delete
- Menggunakan
Binutils-2.44
Binutils menyediakan linker dan assembler agar bisa digunakan oleh glibc dan gcc sebagai bagian inti dalam proses compile
mkdir -v build
cd build
preprare
../configure --prefix=$LFS/tools \
--with-sysroot=$LFS \
--target=$LFS_TGT \
--disable-nls \
--enable-gprofng=no \
--disable-werror \
--enable-new-dtags \
--enable-default-hash-style=gnu
compile
make
make install
GCC-14.2.0
GCC membutuhkan tiga pustaka penting sebagai dependensi utama, yaitu GMP, MPFR, dan MPC. Ketiga pustaka ini digunakan untuk mendukung perhitungan aritmatika presisi tinggi yang diperlukan dalam proses kompilasi. Karena tidak semua sistem host (distro Linux) secara default menyertakan versi yang kompatibel dari pustaka-pustaka ini, maka langkah aman dan direkomendasikan adalah membangunnya secara langsung bersamaan dengan GCC. Untuk itu, setiap arsip sumber dari GMP, MPFR, dan MPC perlu diekstrak ke dalam direktori sumber GCC, lalu direktori hasil ekstraksi tersebut di-rename sesuai yang dikenali oleh sistem build GCC. Dengan cara ini, sistem build GCC secara otomatis akan mendeteksi dan mengintegrasikan pustaka-pustaka tersebut ke dalam proses kompilasi, tanpa perlu konfigurasi tambahan. Langkah ini juga memastikan konsistensi versi dan kompatibilitas penuh antara GCC dan dependensinya selama pembangunan toolchain LFS.
tar -xf ../mpfr-4.2.1.tar.xz
mv -v mpfr-4.2.1 mpfr
tar -xf ../gmp-6.3.0.tar.xz
mv -v gmp-6.3.0 gmp
tar -xf ../mpc-1.3.1.tar.gz
mv -v mpc-1.3.1 mpc
Jika host pakai x86_64
case $(uname -m) in
x86_64)
sed -e '/m64=/s/lib64/lib/' \
-i.orig gcc/config/i386/t-linux64
;;
esac
Sekarang untuk compile GCC
mkdir -v build
cd build
../configure \
--target=$LFS_TGT \
--prefix=$LFS/tools \
--with-glibc-version=2.41 \
--with-sysroot=$LFS \
--with-newlib \
--without-headers \
--enable-default-pie \
--enable-default-ssp \
--disable-nls \
--disable-shared \
--disable-multilib \
--disable-threads \
--disable-libatomic \
--disable-libgomp \
--disable-libquadmath \
--disable-libssp \
--disable-libvtv \
--disable-libstdcxx \
--enable-languages=c,c++
compile
make
make install
Setelah selesai jalankan command
cd ../
cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \
`dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include/limits.h
Command ini membuat file limits.h versi lengkap, lalu menaruhnya di direktori internal GCC, supaya GCC bisa mengenali batasan (limit) sistem secara utuh, walaupun sistem target-nya (LFS) belum punya Glibc lengkap. Hal ini dilakukan karena Saat ini, limits.h yang lengkap belum tersedia, karena glibc belum dibangun. GCC butuh header ini untuk meng-compile Glibc dan program lain nantinya. Kalau header ini tidak lengkap GCC bisa error atau compile-nya tidak optimal.