GCC-3.3.3 - 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:       411.7 MB

La instalación de GCC dendende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

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 paquete se comporta mal si cambias sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Por tanto, si tienes definida cualquier variable de entorno que sobreescriba las optimizaciones por defecto, como CFLAGS y CXXFLAGS, te recomendamos que las desactives cuando construyas GCC.

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

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

Prepara GCC para su compilación:

../gcc-3.3.3/configure --prefix=/tools \
    --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, intentamos minimizar la influencia del sistema anfitrión, así que esto es algo lógico de hacer.

  • --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.

Continúa compilando 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, lo cual significa que es muy probable que se haya compilado correctamente.

La compilación se ha completado y 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. Y de todas formas no tendría sentido ejecutar las pruebas, pues los programas de esta primera fase pronto serán sustituidos.

Ahora instala el paquete:

make install

Como toque final crearemos 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 “Contenido de GCC”.