6.18. GCC-11.2.0 - Pass 2

GCC pakken inneholder GNU kompilatorsamlingen, som inkluderer C og C++ kompilatorene.

Omtrentlig byggetid: 11 SBU
Nødvendig diskplass: 3.3 GB

6.18.1. Installasjon av GCC

Som i den første versjonen av GCC, er GMP-, MPFR- og MPC-pakkene nødvendig. Pakk ut tarballene og flytt dem til den nødvendige mappen :

tar -xf ../mpfr-4.1.0.tar.xz
mv -v mpfr-4.1.0 mpfr
tar -xf ../gmp-6.2.1.tar.xz
mv -v gmp-6.2.1 gmp
tar -xf ../mpc-1.2.1.tar.gz
mv -v mpc-1.2.1 mpc

Hvis du bygger på x86_64, endre standard mappenavn for 64-bit bibliotekene til lib:

case $(uname -m) in
  x86_64)
    sed -e '/m64=/s/lib64/lib/' -i.orig gcc/config/i386/t-linux64
  ;;
esac

Opprett en egen byggemappe igjen:

mkdir -v build
cd       build

Lag en symbolkobling som lar libgcc bygges med brukerstøtte for posix tråder:

mkdir -pv $LFS_TGT/libgcc
ln -s ../../../libgcc/gthr-posix.h $LFS_TGT/libgcc/gthr-default.h

Før du begynner å bygge GCC, husk å deaktivere alle miljø variabler som overstyrer standard optimaliseringsflagg.

Forbered nå GCC for kompilering:

../configure                                       \
    --build=$(../config.guess)                     \
    --host=$LFS_TGT                                \
    --prefix=/usr                                  \
    CC_FOR_TARGET=$LFS_TGT-gcc                     \
    --with-build-sysroot=$LFS                      \
    --enable-initfini-array                        \
    --disable-nls                                  \
    --disable-multilib                             \
    --disable-decimal-float                        \
    --disable-libatomic                            \
    --disable-libgomp                              \
    --disable-libquadmath                          \
    --disable-libssp                               \
    --disable-libvtv                               \
    --disable-libstdcxx                            \
    --enable-languages=c,c++

Betydningen av de nye konfigureringsalternativene:

-with-build-sysroot=$LFS

Normalt bruker --host å sørge for at en krysskompilator brukes til å bygge GCC, og da vet dennne kompilatoren at den må lete etter overskrifter og biblioteker i $LFS. Men byggesystemet til GCC bruker andre verktøy som ikke er klar over denne plasseringen. Denne bryteren sørger for at de finner de nødvendige filene på $LFS, og ikke på verten.

--enable-initfini-array

Dette alternativet aktiveres automatisk når du bygger en lokal kompilator med en lokal kompilator på x86. Men her bygger vi med en krysskompilator, så vi må eksplisitt angi dette alternativet.

Kompiler pakken:

make

Installer pakken:

make DESTDIR=$LFS install

Som en siste finpuss kan du lage en symbolkobling. Mange programmer og skript bruker cc i stedet for gcc, som brukes til å holde programmer generiske og derfor brukbare på alle typer UNIX systemer der GNU C-kompilatoren ikke alltid er installert. Kjøre cc lar systemadministratoren bestemme hvilken C-kompilator som skal installeres:

ln -sv gcc $LFS/usr/bin/cc

Detaljer om denne pakken finner du i Section 8.26.2, “Innhold i GCC.”