5.5. GCC-3.4.1 - Fase 1

El paquete GCC contiene la colección de compiladores GNU, que incluye los compiladores C y C++.

Tiempo estimado de construcción: 4.4 SBU
Espacio requerido en disco: 300 MB
La instalación de GCC depende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed y Texinfo

5.5.1. Instalación de GCC

Desempaqueta sólo el paquete gcc-core, pues por el momento no vamos a necesitar ni el compilador de C++ ni el banco de pruebas.

Se sabe que este programa se comporta mal si se cambian sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Si tienes definida cualquier variable de entorno que altere las optimizaciones por defecto, como CFLAGS o CXXFLAGS, desactívala cuando construyas GCC.

La documentación de GCC recomienda construirlo en un directorio dedicado, fuera del árbol de las fuentes:

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

Prepara GCC para su compilación:

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

Significado de las opciones de configure:

--with-local-prefix=/tools

Esta opción es para eliminar /usr/local/include de las rutas de búsqueda por defecto de gcc. Esto no es esencial, sin embargo ayuda a minimizar la influencia del sistema anfitrión.

--enable-shared

Esta opción no parece intuitiva al principio, pero nos permite construir libgcc_s.so.1 y libgcc_eh.a, y tener a libgcc_eh.a disponible nos asegura que el guión configure de Glibc (el siguiente paquete por compilar) produzca los resultados apropiados. Ten en cuenta que los binarios de GCC se compilarán estáticamente de todas formas, ya que esto lo controla el valor -static que asumirá la variable BOOT_LDFLAGS en el siguiente paso.

--enable-languages=c

Esta opción nos asegura que sólo se construya el compilador de C. Es necesaria únicamente en caso de que hayas descargado y desempaquetado el paquete completo de GCC.

Compila el paquete:

make BOOT_LDFLAGS="-static" bootstrap

Significado de los parámetros de make:

BOOT_LDFLAGS="-static"

Esto le indica a GCC que sus programas se enlacen estáticamente.

bootstrap

Este objetivo no sólo compila GCC, sino que lo compila varias veces. Usa los programas compilados la primera vez para compilarse a sí mismo una segunda vez y luego una tercera. Después compara la segunda compilación con la tercera para asegurarse que puede reproducirse a sí mismo sin errores. Esto también implica que se ha compilado correctamente.

La compilación se ha completado. En este punto normalmente ejecutaríamos el banco de pruebas, pero, como se mencionó antes, el entorno de trabajo para los bancos de pruebas no se encuentra todavía en su lugar. Los beneficios de ejecutar ahora los bancos de pruebas son mínimos, pues los programas de esta primera fase pronto serán sustituidos.

Instala el paquete:

make install

Como toque final, crea un enlace simbólico. Muchos programas y guiones ejecutan cc en vez de gcc. Esto es una forma de hacer que los programas sean genéricos y por tanto utilizables en toda clase de sistemas Unix. No todos tienen instalado el compilador de C de GNU. Ejecutar cc deja al administrador del sistema libre de decidir qué compilador de C instalar, mientras haya un enlace simbólico que apunte a él.

ln -s gcc /tools/bin/cc

Los detalles sobre este paquete se encuentran en la Sección 6.14.2, “Contenido de GCC”.