Dettagli su questo pacchetto si trovano nella Sezione 6.14.2, “Contenuti di GCC.”
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
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:
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.
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.
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:
Questo dice a GCC di linkare staticamente i suoi programmi.
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.”