Il modo più semplice
Se sei uno sviluppatore tipico, puoi installare in modo semplice, usando le istruzioni su http://gcc.gnu.org/wiki/InstallingGCC o il tuo gestore di pacchetti di sistema come:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
The Hard Way
GCC dice che la risposta qui è "nel modo più difficile" perché costruisce tutto pezzo per pezzo e non utilizza librerie condivise.
Infrastruttura GCC
Ottieni l'infrastruttura GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Metti i download in una directory temporanea (puoi usare qualsiasi directory desideri).
/opt/downloads
Crea l'infrastruttura in una directory temporanea diversa dalla directory dei download o dalle sue sottodirectory:
/tmp/gcc
Configura l'infrastruttura utilizzando librerie statiche come questa:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Il flag --disable-shared potrebbe valere la pena dare un'occhiata più da vicino a seconda delle tue esigenze. Uso --disable-shared perché sto costruendo solo codice statico e voglio assicurarmi di non creare alcun codice condiviso. La mia necessità è spostare facilmente il GCC risultante tra le mie unità, quindi voglio tutto il codice statico e non voglio alcun codice condiviso. Se preferisci il codice condiviso, ometti il flag --disable-shared.
versioni
Quando esegui uno dei comandi in questa risposta, assicurati di aggiornare i comandi per utilizzare il numero di versione corrente di GCC che corrisponde alle tue esigenze. I comandi in questa risposta sono per GCC 4.6.2.
Si noti che la documentazione di GCC dice: "Mentre qualsiasi versione sufficientemente nuova degli strumenti richiesti di solito funziona, i requisiti della libreria sono generalmente più rigidi. Le versioni più recenti possono funzionare in alcuni casi, ma è più sicuro utilizzare le versioni esatte documentate."
GMP
GMP è la GNU Multiple Precision Arithmetic Library.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR
MPFR è la libreria GNU di arrotondamento in virgola mobile a precisione multipla. Dipende da GMP.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
MPC
MPC è la libreria C GNU a precisione multipla. Dipende da GMP e MPFR.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
ELFO
ELF è l'acronimo di Executable and Linkable Format. Questa libreria fornisce dimensioni indipendenti dall'architettura e supporto endian.
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC
GCC è la GNU Compiler Collection. Dipende da GMP, MPFR, MPC ed ELF.
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
Compila gcc in una directory di lavoro sullo stesso punto di montaggio. (Costruirlo in / tmp provocherebbe problemi con l'host di compilazione incrociata)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Il comando configure e i suoi flag devono essere tutti su una riga di comando (questo post li mostra su righe separate solo a causa della larghezza della pagina web).
Nota: utilizziamo il percorso completo per configurare e non impostiamo le variabili di ambiente del percorso della libreria. Scegliamo di disabilitare il bootstrap e disabilitare le librerie condivise perché non le vogliamo (gli utenti tipici potrebbero volere entrambi), e di usare i thread posix e i flag che sono predefiniti perché li vogliamo (gli utenti tipici potrebbero voler usare altri thread o saltare flag predefiniti). YMMV e leggi le bandiere qui
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
Questa pagina è ottima per le informazioni sull'installazione di GCC, come costruirlo, vari flag e altro:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
aggiornamenti
Le librerie ppl possono essere utilizzate per l'ottimizzazione della memoria: vedere bugseng.com/products/ppl/Download (Grazie Paul nei commenti)
È possibile eseguire ./contrib/download_prerequisites dalla directory dei sorgenti di gcc. (Grazie a N7P su reddit)