Tiempo estimado de construcción: 4.4 SBU Estimación del espacio necesario en disco: 300 MB |
El paquete GCC contiene la colección de compiladores GNU, que incluye los compiladores C y C++.
Programas instalados: c++, cc (enlace a gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug y gcov
Librerías instaladas: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] y libsupc++.a
GCC depende de: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.
Por ahora no vamos a necesitar un compilador de C++, así que desempaqueta GCC-core solamente.
Nota: Aunque GCC es un paquete importante de las herramientas principales, no vamos a ejecutar su banco de pruebas en esta fase. Primero, porque el entorno de trabajo del banco de pruebas aún no está en su sitio y segundo, porque los programas de esta primera fase pronto serán sobreescritos por aquellos instalados en la segunda fase.
Se sabe que este programa 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 pueda sobreescribir las optimizaciones por defecto, como CFLAGS y CXXFLAGS, te recomendamos que las desactives o modifiques antes de construir GCC.
La documentación de GCC recomienda construirlo en un directorio aparte, fuera del directorio de las fuentes:
mkdir ../gcc-build cd ../gcc-build |
Prepara GCC para su compilación:
../gcc-3.3.1/configure --prefix=/tools \ --with-local-prefix=/tools \ --disable-nls --enable-shared \ --enable-languages=c |
El significado de las opciones de configure es:
--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 queremos intentar 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 más adelante.
--enable-languages=c: Esta opción nos asegura que sólo se construya el compilador de C. Es necesaria unicamente en caso de que hayas descargado y desempaquetado el paquete completo de GCC.
Continúa compilando el paquete:
make BOOT_LDFLAGS="-static" bootstrap |
El significado de las opciones de make es:
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.
Instala el paquete:
make install |
Como toque final crearemos el enlace /tools/bin/cc. 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 usables 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 -sf gcc /tools/bin/cc |