5.5. GCC-3.4.1 - Passo 1

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

Tempo approssimativo di costruzione: 4.4 SBU

Spazio su disco richiesto: 300 MB

L'installazione di GCC dipende da: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo

5.5.1. Installazione di GCC

Scompattare solo il tarball gcc-core, poiché qui non sono necessari né il compilatore C++ né la suite di test.

Questo pacchetto è noto per avere problemi quando i suoi flag di ottimizzazione (incluse le opzioni -march e -mcpu) vengono cambiati. Se è stata definita una qualunque delle variabili ambiente che si sovrappone alle ottimizzazioni di default, come CFLAGS e CXXFLAGS, disallocarle quando si costruisce GCC.

La documentazione di GCC raccomanda di costruire GCC al di fuori della directory dei sorgenti, in una directory di costruzione dedicata:

mkdir ../gcc-build
cd ../gcc-build

Preparare GCC per la compilazione:

../gcc-3.4.1/configure --prefix=/tools \
    --libexecdir=/tools/lib --with-local-prefix=/tools \
    --disable-nls --enable-shared --enable-languages=c

Significato delle opzioni di configurazione:

--with-local-prefix=/tools

Lo scopo di questa opzione è di rimuovere /usr/local/include dal percorso di ricerca di include di gcc. Ciò non è assolutamente essenziale, tuttavia, aiuta a minimizzare l'influenza del sistema host.

--enable-shared

Questa opzione all'inizio sembra essere anti-intuitivo. Tuttavia, permette la costruzione di libgcc_s.so.1 e libgcc_eh.a, e avere libgcc_eh.a disponibile assicura lo script configure per Glibc (il prossimo pacchetto che compiliamo) produca risultati appropriati. Notare che i binari di GCC verranno sempre linkati staticamente, poiché ciò è controllato dal valore -static della variabile BOOT_LDFLAGS nel prossimo passo.

--enable-languages=c

Questa opzione assicura che vanga costruito solo il compilatore C. Questa opzione è necessaria solo se è stato scaricato e scompattato tutto il tarball GCC, invece del solo tarball gcc-core.

Continuare con la compilazione del pacchetto:

make BOOT_LDFLAGS="-static" bootstrap

Significato delle opzioni di configurazione:

BOOT_LDFLAGS="-static"

Questo dice a GCC di linkare staticamente i suoi programmi.

bootstrap

Questo target non si limita a compilare GCC, ma lo compila molte volte. Usa i programmi compilati in un primo round per compilare se stesso una seconda volta, e quindi di nuovo una terza volta. Quindi confronta la seconda e la terza compilazione per essere sicuro di potersi riprodurre perfettamente. Questo presuppone anche che sia compilato correttamente.

La compilazione è ora completa. A questo punto normalmente verrebbe eseguita la suite di test, ma, come citato in precedenza, il framework della suite di test non è ancora al suo posto. I benefici derivanti dall'esecuzione dei test a questo punto sono minimi, poiché i programmi del primo passo verranno presto rimpiazzati.

Installare il pacchetto:

make install

Come tocco finale, creare un symlink. Molti programmi e script eseguono cc invece di gcc, che è usato per avere programmi generici e solitamente usabili su tutti i tipi di sistemi UNIX, dove il compilatore C GNU non è sempre installato. Eseguire cc lascia l'amministratore di sistema libero di decidere quale compilatore C installare.

ln -s gcc /tools/bin/cc

Dettagli su questo pacchetto si trovano nella Sezione 6.14.2, “Contenuti di GCC.”