La manera fácil
Si eres un desarrollador típico, puedes instalarlo de la manera más sencilla, siguiendo las instrucciones en http://gcc.gnu.org/wiki/InstallingGCC o el administrador de paquetes de tu sistema, como:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
El camino difícil
GCC dice que la respuesta aquí es "el camino difícil" porque construye todo pieza por pieza y no usa bibliotecas compartidas.
Infraestructura de GCC
Obtenga la infraestructura de GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Coloque las descargas en un directorio temporal (puede usar el directorio que desee).
/opt/downloads
Construya la infraestructura en un directorio temporal que sea diferente al directorio de descargas o sus subdirectorios:
/tmp/gcc
Configure la infraestructura usando bibliotecas estáticas como esta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Es posible que valga la pena examinar el indicador --disable-shared según sus necesidades. Utilizo --disable-shared porque solo estoy compilando código estático y quiero asegurarme de no compilar ningún código compartido. Mi necesidad es mover el GCC resultante alrededor de mis unidades fácilmente, así que quiero todo el código estático y no quiero ningún código compartido. Si prefiere el código compartido, omita la marca --disable-shared.
Versiones
Cuando ejecute cualquiera de los comandos en esta respuesta, asegúrese de actualizar los comandos para usar el número de versión actual de GCC que coincida con sus necesidades. Los comandos en esta respuesta son para GCC 4.6.2.
Tenga en cuenta que la documentación de GCC dice: "Si bien cualquier versión suficientemente nueva de las herramientas requeridas generalmente funciona, los requisitos de la biblioteca son generalmente más estrictos. Las versiones más nuevas pueden funcionar en algunos casos, pero es más seguro usar las versiones exactas documentadas".
GMP
GMP es la biblioteca aritmética de precisión múltiple de GNU.
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 es la biblioteca GNU de redondeo de punto flotante de precisión múltiple. Depende de 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 es la biblioteca C de precisión múltiple de GNU. Depende de GMP y 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 son las siglas de Executable and Linkable Format. Esta biblioteca proporciona compatibilidad con endian y tamaño independiente de la arquitectura.
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 es la colección de compiladores GNU. Depende de GMP, MPFR, MPC y 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
Compile gcc en un directorio temporal en el mismo punto de montaje. (Construirlo dentro de / tmp desencadenaría problemas de host de compilación cruzada)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
El comando configure y sus banderas deben estar todos en una línea de comando (esta publicación los muestra en líneas separadas solo por el ancho de la página web).
Nota: Usamos la ruta completa para configurar y no establecemos variables de entorno de ruta de biblioteca. Elegimos deshabilitar el bootstrap y deshabilitar las bibliotecas compartidas porque no las queremos (los usuarios típicos pueden querer ambos), y usar subprocesos posix y marcadores que son predeterminados porque los queremos (los usuarios típicos pueden querer usar otros subprocesos u omitir banderas predeterminadas). YMMV y lea sobre las banderas aquí
/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 es excelente para obtener información sobre la instalación de GCC, cómo construirlo, varios indicadores y más:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Actualizaciones
Las bibliotecas de ppl se pueden utilizar para optimizaciones de memoria: consulte bugseng.com/products/ppl/Download (gracias Paul en los comentarios)
Puede ejecutar ./contrib/download_prerequisites desde el directorio de origen de gcc. (Gracias a N7P en reddit)