6.14. GCC-3.4.3

Il pacchetto GCC contiene la collezione di compilatori GNU, che include i compilatori C e C++.

Tempo approssimativo di costruzione: 11.7 SBU
spazio su disco richiesto: 451 MB
L'installazione dipende da: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo

6.14.1. Installazione di GCC

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 ../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
[Importante]

Importante

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 -s ../usr/bin/cpp /lib

Molti pacchetti usano il nome cc per chiamare il compilatore C. Per soddisfare questi pacchetti creare un link simbolico:

ln -s gcc /usr/bin/cc
[Nota]

Nota

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.

6.14.2. Contenuti di GCC

Programmi installati: c++, cc (link a gcc), cpp, g++, gcc, gccbug e gcov
Librerie installate: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] e libsupc++.a

Brevi descrizioni

cc

Il compilatore C

cpp

Il preprocessore C. È usato dal compilatore per espandere le dichiarazioni #include, #define e simili nei file sorgenti.

c++

Il compilatore C++

g++

Il compilatore C++.

gcc

Il compilatore C.

gccbug

Uno shell script usato per aiutare a creare utili bug report.

gcov

Tool di coverage testing. È usato per analizzare i programmi per trovare dove le ottimizzazioni avranno il maggior effetto.

libgcc

Contiene il supporto run-time per gcc.

libstdc++

La libreria standard C++.

libsupc++

Fornisce routine di supporto per il linguaggio di programmazione C++.