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: 294 MB
L'installazione di GCC 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.
Estrarre i tarball GCC-core e GCC-g++, si scompatteranno nella
stessa directory. Se si vuole si può estrarre il pacchetto
GCC-testsuite. L'intero pacchetto GCC contiene anche altri
compilatori. Istruzioni per costruirli si possono trovare su
http://www.linuxfromscratch.org/blfs/view/svn/general/gcc.html.
Dapprima applicare solo la patch No-Fixincludes (e non la patch
Specs) usata anche nel capitolo precedente:
patch -Np1 -i ../gcc-3.4.1-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.1-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.1/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
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.13, “GCC-3.4.1 -
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 pachetti, creare un link simbolico:
ln -s gcc /usr/bin/cc
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 avete erroneamente applicato la patch GCC Specs
dal Capitolo 5.
Programmi installati: c++, cc (link a gcc), cpp, g++, gcc,
gccbug, and gcov
Librerie installate: libgcc.a, libgcc_eh.a, libgcc_s.so,
libstdc++.[a,so], and libsupc++.a
Brevi descrizioni
-
cc
-
Il compilatore C
-
cpp
-
Il preprocessore C. E' 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. E' 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++.