GCC-3.4.1

Introduzione a GCC

Il pacchetto GCC contiene i compilatori GNU. Esso serve per compilare programmi scritti in C, C++, Fortran, Java, Objective C e Ada.

Informazioni sul Pacchetto

Dipendenze di GCC

Raccomandate

Installazione di GCC

Se si intende compilare Ada, sarà necessario installare temporaneamente GNAT per soddisfare le dipendenze circolari quando si ricompila GCC per includere Ada.

Informazioni sul pacchetto

Dipendenze di GNAT

Necessaria

Tcsh-6.13.00

Installazione di GNAT

Installare GNAT eseguendo i seguenti comandi:

./doconfig

Lo script precedente chiederà come e dove si vuole installare GNAT. Per evitare conflitti con il gcc di sistema il pacchetto verrà installato in una directory separata, che più tardi può essere rimossa dal sistema.

In risposta alle domande chieste dallo script doconfig inserire 3 in risposta alla prima domanda e /opt/gnat in risposta alla seconda domanda.

Per finire l'installazione eseguire il seguente comando come utente root:

./doinstall

Il compilatore GNAT può essere invocato eseguendo il binario gcc installato dallo script precedente.

Prepararsi a compilare GCC mettendo il gcc di GNAT all'inizio della variabile PATH, usando i seguenti comandi:

PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH

Ritornare all'installazione di GCC

Installare GCC eseguendo i seguenti comandi:

[Importante]

Importante

Il processo di installazione potrebbe sovrascrivere il proprio compilatore e librerie GCC. E' altamente raccomandato avere i pacchetti Tcl, Expect e DejaGnu installati, e anche scompattare il tarball della testsuite GCC prima di iniziare la costruzione.

Non continuare con il comando make install fino a quando non si è certi che la costruzione avrà successo. Si possono confrontare i risultati dei propri test con quelli che si trovano presso http://gcc.gnu.org/ml/gcc-testresults/. C'è anche un risultato di test su una piattaforma i686 prodotto da un sistema LFS-6.0 presso http://linuxfromscratch.org/~randy/gcc341_test.txt. Si potrebbe anche voler fare riferimento alle informazioni trovate nella sezione GCC-Passo 2 del Capitolo 5 nel libro LFS ( ../../../../lfs/view/6.0/chapter05/gcc-pass2.html).

[Nota]

Nota

Alcuni dei programmi Java installati dal pacchetto GCC vanno in conflitto (hanno gli stessi nomi) con programmi del pacchetto J2SDK-1.4.2. Se si installa il linguaggio Java dal pacchetto GCC ma si desidera usare i programmi da J2SDK come default, assicurarsi che $JAVA_HOME/bin sia elencata prima di /usr/bin nella propria variabile PATH.

patch -Np1 -i ../gcc-3.4.1-no_fixincludes-1.patch &&
patch -Np1 -i ../gcc-3.4.1-linkonce-1.patch &&
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../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++,objc,f77,ada,java &&
make bootstrap &&
make -C gcc gnatlib-shared &&
make -C gcc gnattools &&
make -k check &&
../gcc-3.4.1/contrib/test_summary

Ora, come utente root:

make install &&
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&
ln -v -sf g77 /usr/bin/f77 &&
chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include &&
chown -v -R root:root /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/ada{lib,include}

Si può rimuovere l'installazione GNAT e ripristinare il proprio vecchio PATH:

rm -rf /opt/gnat &&
export PATH=$PATH_HOLD

Spiegazioni dei comandi

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in: questo comando sopprime l'installazione di libiberty.a, poiché viene usata la versione fornita da Binutils.

mkdir ../gcc-build; cd ../gcc-build: la documentazione di GCC raccomanda di costruire il pacchetto in una directory di costruzione dedicata.

--enable-shared --enable-threads=posix --enable-__cxa_atexit: questi comandi sono richiesti per costruire le librerie C++ sugli standard pubblicati.

--enable-clocale=gnu: questo comando è un failsafe per dati locali incompleti.

--enable-languages=c,c++,objc,f77,ada,java: questo comando identifica quale linguaggio costruire. Si può modificare questo comando per rimuovere linguaggi non desiderati.

make -C gcc gnatlib-shared: questo comando costruisce le librerie condivise e statiche Ada. Saltare questo passo se non si ha abilitato Ada come uno dei linguaggi.

make -C gcc gnattools: questo comando costruisce i tool di sviluppo e i binari Ada. Saltare questo passo se non si ha abilitato Ada come uno dei linguaggi.

make -k check: questo comando esegue la test suite senza fermarsi se dovesse incontrare un errore.

../gcc-3.4.1/contrib/test_summary: questo comando produrrà un sommario dei risultati della test suite. Si può aggiungere | grep -A7 Summ al comando per produrre una versione ancora più condensata del sommario. Si potrebbe anche voler redirigere l'output a un file per una revisione e confronto successivo.

ln -sf ../usr/bin/cpp /lib: questo comando crea un link al preprocessore C, poiché alcuni pacchetti si aspettano di trovarlo installato nella directory /lib.

ln -sf gcc /usr/bin/cc; ln -sf g77 /usr/bin/f77: questi link sono creati perché alcuni pacchetti fanno riferimento ai compilatori C e Fortran usando un nome diverso.

chown -R root:root /usr/lib/gcc/i686-pc-linux-gnu/...: se il pacchetto è costruito da un utente diverso da root il proprietario delle directory installate include e adalib (e dei loro contenuti) non sarà corretto. Questi comandi cambiano il proprietario a root:root. Omettere il comando cambiando le directory Ada se non si include Ada tra i linguaggi installati.

Contenuti

Programmi installati: addr2name.awk, cc, c++, cpp, f77, g++, g77, gcc, gccbug, gcj, gcjh, gcov, gij, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gpr2make, gprcmd, grepjar, jar, jcf-dump, jv-convert, jv-scan, rmic, rmiregistry and architecture specific names for c++, g++, gcc{,-3.4.1}, gcj e gcjh
Librerie installate: lib-org-w3c-dom.[so,a], lib-org-xml-sax.[so,a], libffi-2.00-beta.so, libffi.[so,a], libfrtbegin.a, libg2c.[so,a], libgcc_s.so, libgcj.[so,a], libobjc.[so,a], libstdc++.[so.6,a], libsupc++.a e numerose altre librerie runtime ed eseguibili in /usr/lib/gcc
Directory installate: /usr/include/c++, /usr/include/gcj, /usr/include/gnu, /usr/include/java, /usr/include/javax, /usr/lib/gcc, /usr/lib/security, /usr/share/gnat e /usr/share/java

Brevi descrizioni

Alcune descrizioni di programmi e librerie non sono elencate qui, ma possono essere trovate presso ../../../../lfs/view/6.0/chapter06/gcc.html#contents-gcc.

addr2name.awk

emula alcune delle funzionalità di addr2line.

f77

è un symlink a g77, creato per ragioni di compatibilità.

g77

è il compilatore Fortran invocato da gcc.

gcj

è un compilatore avanti coi tempi per il linguaggio Java.

gcjh

genera file header da file di classe Java.

gij

è l'interprete GNU per il Java bytecode.

gnat

è il compilatore Ada invocato da gcc.

gnatbind

è usato per collegare oggetti compilati.

gnatbl

è il linker Ada.

gnatchop

serve per rinominare file per conformarli alle convenzioni di default dei nomi standard dei file Ada.

gnatclean

è usato per rimuovere file associati con un progetto GNAT.

gnatfind

è il finder GNAT di definizione/uso.

gnatkr

è usato per determinare il nome compresso di un file dato, quando è compresso in una massima lungezza specificata.

gnatlink

è usato per linkare programmi e costruire un file eseguibile.

gnatls

è il browser dell'unità compilato.

gnatmake

è un servizio make automatico.

gnatname

elencherà i file associati ad un progetto GNAT.

gnatprep

è il preprocessore GNAT esterno.

gnatxref

è il cross-referencer GNAT.

gpr2make

è un tool usato per creare Makefile che supportano compilazione di linguaggi multipli.

gprcmd

è un'utilità usata da Makefile.generic per gestire costruzioni multi-linguaggio. Fornisce un set di comandi in modo che il Makefile non debba dipendere dalle utilità Unix, non disponibili ovunque.

grepjar

cerca pattern in file jar.

jar

è un tool archivio per archivi Java .

jcf-dump

stampa informazioni sui file class di Java.

jv-convert

converte file da una codifica ad un'altra.

jv-scan

stampa informazioni sui file sorgenti Java.

rmic

genera matrici per Remote Method Invocation.

rmiregistry

avvia un remote object registry sull'host corrente.

Last updated on