O caminho fácil
Se você for um desenvolvedor típico, pode instalar da maneira mais fácil, usando as instruções em http://gcc.gnu.org/wiki/InstallingGCC ou no gerenciador de pacotes do sistema, como:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
O jeito difícil
O GCC diz que a resposta aqui é "da maneira mais difícil" porque ele constrói tudo peça por peça e não usa bibliotecas compartilhadas.
Infraestrutura GCC
Obtenha a infraestrutura GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Coloque os downloads em um diretório temporário (você pode usar qualquer diretório que desejar).
/opt/downloads
Crie a infraestrutura em um diretório temporário diferente do diretório de downloads ou de seus subdiretórios:
/tmp/gcc
Configure a infraestrutura usando bibliotecas estáticas como esta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
O sinalizador --disable-shared pode valer a pena um olhar mais atento, dependendo de suas necessidades. Eu uso --disable-shared porque estou construindo apenas código estático e quero ter certeza de que não construo nenhum código compartilhado. Minha necessidade é mover o GCC resultante pelas minhas unidades facilmente, então eu quero todo o código estático e não quero nenhum código compartilhado. Se você preferir código compartilhado, omita o sinalizador --disable-shared.
Versões
Ao executar qualquer um dos comandos nesta resposta, certifique-se de atualizar os comandos para usar o número da versão atual do GCC que corresponda às suas necessidades. Os comandos nesta resposta são para GCC 4.6.2.
Observe que a documentação do GCC diz: "Embora qualquer versão suficientemente nova das ferramentas necessárias geralmente funcione, os requisitos da biblioteca são geralmente mais rígidos. As versões mais recentes podem funcionar em alguns casos, mas é mais seguro usar as versões exatas documentadas."
GMP
GMP é a 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 é a biblioteca de arredondamento de ponto flutuante de precisão múltipla GNU. Depende do 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 é a biblioteca C GNU Multiple-precision. Depende de 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
DUENDE
ELF significa Executable and Linkable Format. Esta biblioteca fornece tamanho independente de arquitetura e suporte de 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 é a coleção de compiladores GNU. Depende de GMP, MPFR, MPC e 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
Construa o gcc em um diretório temporário no mesmo ponto de montagem. (Construí-lo em / tmp desencadearia problemas de host de compilação cruzada)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
O comando configure e seus sinalizadores devem estar todos em uma linha de comando (este post os mostra em linhas separadas apenas por causa da largura da página da web).
Observação: usamos o caminho completo para configurar e não definimos as variáveis de ambiente do caminho da biblioteca. Escolhemos desabilitar o bootstrap e desabilitar as bibliotecas compartilhadas porque não as queremos (usuários típicos podem querer ambos), e usar threads posix e sinalizadores que são padrões porque os queremos (usuários típicos podem querer usar outras threads ou pular sinalizadores padrão). YMMV e leia sobre as bandeiras aqui
/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
Esta página é ótima para informações de instalação do GCC, como construí-lo, vários sinalizadores e muito mais:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Atualizações
As bibliotecas ppl podem ser usadas para otimizações de memória: consulte bugseng.com/products/ppl/Download (Obrigado Paul nos comentários)
Você pode executar ./contrib/download_prerequisites a partir do diretório de origem do gcc. (Obrigado ao N7P no reddit)