Il pacchetto GCC contiene la collezione di compilatori GNU, che include i compilatori C e C++.
Questo pacchetto è noto per avere problemi quando vengono cambiati i suoi flag di ottimizzazione di default (incluse le opzioni -march e -mcpu). Pertanto, se dovessero essere state definite variabili di ambiente che disabilitano le nostre ottimizzazioni predefinite, come i flag CFLAGS e CXXFLAGS, raccomandiamo di eliminarle quando si costruisce GCC.
Dapprima applicare solo la patch No-Fixincludes (e non la patch Specs) usata anche nel capitolo precedente:
patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch
GCC fallisce la compilazione di alcuni pacchetti al di fuori di una installazione base di Linux From Scratch (es., Mozilla e kdegraphics) quando viene usato assieme alle versioni di binutils più recenti. Applicare la seguente patch per correggere il problema:
patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch
Applicare una sostituzione sed che sopprimerà l'installazione di libiberty.a. Vogliamo utilizzare la versione di libiberty.a fornita da Binutils:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
La documentazione di GCC raccomanda di costruire GCC fuori dalla directory dei sorgenti in una directory dedicata:
mkdir -v ../gcc-build cd ../gcc-build
Ora preparare GCC per la compilazione:
../gcc-3.4.3/configure --prefix=/usr \ --libexecdir=/usr/lib --enable-shared \ --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++
Compilare il pacchetto:
make
La suite di test per GCC in questa sezione è considerata critica. Non saltarla per nessuna ragione.
Testare i risultati, ma senza bloccarsi sugli errori:
make -k check
Alcuni degli errori sono problemi conosciuti e sono stati segnalati nel capitolo precedente. Le note sulle suite di test dalla Sezione 5.11, “GCC-3.4.3 - Passo 2” sono ancora valide qui. Assicurarsi di farvi riferimento nel caso ci fosse qualsiasi dubbio.
Installare il pacchetto:
make install
Alcuni pacchetti si aspettano che il preprocessore C sia installato nella directory /lib. Per supportare questi pacchetti creare questo link simbolico:
ln -sv ../usr/bin/cpp /lib
Molti pacchetti usano il nome cc per chiamare il compilatore C. Per soddisfare questi pacchetti creare un link simbolico:
ln -sv gcc /usr/bin/cc
A questo punto è fortemente raccomandato ripetere il test di integrità che è stato eseguito in precedenza in questo capitolo. Farvi riferimento per la Sezione 6.12, “Riaggiustamento della Toolchain,” e ripetere il controllo. Se i risultati sono sbagliati allora probabilmente è stata applicata erroneamente la patch GCC Specs dal Capitolo 5.