GCC-3.3.3 - 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 necessario sul disco:     411.7 MB

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

Installazione di GCC

Scompattate solamente il tarball principale di GCC, perché qui non avremo bisogno né del compilatore C++, né della suite di test.

Questo pacchetto è noto per avere problemi quando vengono cambiati i suoi flag di ottimizzazione predefiniti (incluse le opzioni -march e -mcpu). Pertanto, se doveste aver definito variabili di ambiente che disabilitano le nostre ottimizzazioni predefinite, come i flag CFLAGS e CXXFLAGS, raccomandiamo di eliminarle quando costruite GCC.

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

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

Preparatevi per la compilazione di GCC:

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

Il 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. Questo non è assolutamente essenziale; tuttavia, cerchiamo di minimizzare l'influenza del sistema host e questa è una delle cose da fare.

  • --enable-shared: questa opzione all'inizio può sembrare poco intuitiva. Tuttavia utilizzarla permette la costruzione di libgcc_s.so.1 e libgcc_eh.a e avere libgcc_eh.a disponibile assicura che lo script di configurazione per Glibc (il prossimo pacchetto che compileremo) produca risultati corretti. Notate che i binari di gcc verranno ancora linkati staticamente. Questo è controllato dal valore -static di BOOT_LDFLAGS nel prossimo passo.

  • --enable-languages=c: questa opzione assicura che verrà costruito solo il compilatore C. L'opzione è necessaria solo quando scaricate e scompattate l'intero tarball di GCC.

Proseguite compilando il pacchetto:

make BOOT_LDFLAGS="-static" bootstrap

Il significato dei parametri di make è:

  • BOOT_LDFLAGS="-static": questo dice a GCC di linkare i suoi programmi staticamente.

  • bootstrap: questo target non si limita a compilare GCC, ma lo compila più volte. Usa i programmi compilati nel 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 assicurarsi di potersi autoriprodurre senza differenze, il che significa probabilmente che è stato compilato correttamente.

La compilazione è ora completa, e a questo punto normalmente avvieremmo la suite di test. Ma, come detto prima, il framework della suite di test non è ancora in pista. E ci sarebbe comunque uno scarso vantaggio avviando il test ora, poiché i programmi di questo primo passo saranno presto sostituiti.

Ora installate il pacchetto:

make install

Come tocco finale creeremo un link simbolico. Molti programmi e script avviano cc invece di gcc, una cosa pensata per mantenere i programmi generali e comunque usabili in tutti i tipi di sistemi Unix. Non tutti hanno il compilatore GNU C installato. Avviare semplicemente cc lascia l'amministratore di sistema libero di decidere quale compilatore C installare, perché c'è un link simbolico che punta all'eseguibile giusto:

ln -s gcc /tools/bin/cc

Dettagli su questo pacchetto si trovano nella sezione chiamata “Contenuti di GCC”.