Estimación del tiempo de construcción: 9.48 SBU Estimación del espacio necesario en disco: 326 MB |
Última versión comprobada: 3.1.
El paquete GCC contiene la colección de compiladores GNU, que incluye los compiladores C y C++.
GCC instala lo siguiente:
Última versión comprobada: 2.95.3.
Bash: sh
Binutils: ar, as, ld, nm, ranlib
Diffutils: cmp
Fileutils: chmod, cp, ln, ls, mkdir, mv, rm, touch
Find: find
Gcc: cc, cc1, collect2, cpp0, gcc
Grep: egrep, grep
Make: make
Sed: sed
Sh-utils: basename, dirname, echo, expr, hostname, sleep, true, uname
Tar: tar
Texinfo: install-info, makeinfo
Textutils: cat, tail, tr
No necesitamos un compilador C++ hasta el Capítulo 6. Así que, en este momento, sólo es necesario desempaquetar el paquete gcc-core.
Se sabe que este programa se comporta mal si cambias sus parámetros de optimización (incluyendo las opciones -march y -mcpu). Por esta razón, si tienes definida cualquier variable de entorno que pueda sobreescribir las optimizaciones por defecto, como CFLAGS o CXXFLAGS, recomendamos quitarlas o modificarlas cuando construyas GCC.
La documentación sobre la instalación de GCG recomienda construir GCC en un directorio dedicado fuera del árbol de las fuentes:
mkdir ../gcc-build cd ../gcc-build |
Prepara GCC para su compilación:
../gcc-3.2.1/configure --prefix=/static \ --disable-nls --disable-shared \ --with-as=$LFS/static/bin/as \ --with-ld=$LFS/static/bin/ld |
El significado de las opciones de configure es:
--prefix=/static: Esto NO es un error tipográfico. GCC incorpora a su código algunas rutas durante la compilación y por eso necesitamos indicar /static como prefijo durante la fase de configure. Pasaremos el prefijo real de instalación ($LFS/static) posteriormente, durante la fase de instalación.
--disable-shared: Esto evita la construcción de las librerías dinámicas. No son de utilidad para nosotros en este momento. Las crearemos cuando reinstalemos GCC en el capítulo 6.
--with-as=$LFS/static/bin/as y --with-ld=$LFS/static/bin/ld: GCC puede compilarse mal si el paquete Binutils de tu sistema anfitrión es algo antiguo. Necesitamos un GCC estático que funcione bien hasta que reistalemos posteriormente GCC en el capítulo 6. Por eso usamos los programas as y ld del paquete Binutils que acabamos de compilar, para asegurarnos de que GCC funcionará correctamente.
Continúa compilando el paquete:
make BOOT_LDFLAGS="-static" bootstrap |
El significado de las opciones de make es:
BOOT_LDFLAGS="-static": Esto es el equivalente al "make LDFLAGS=-static" que usamos con otros paquetes para compilarlos estáticamente.
bootstrap: El objetivo bootstrap no sólo compila GCC, si no que compila GCC varias veces. Utiliza el primer programa compilado para compilarse a si mismo una segunda y tercera vez, asegurandose de que el compilador se compiló correctamente.
Y termina instalando el paquete:
make prefix=$LFS/static install-no-fixedincludes |
El significado de la opción de make es:
install-no-fixedincludes: Esto evita que se ejecute el guión fixincludes. Se necesita porque, bajo circunstancias normales, la instalación de GCC ejecutará el guión fixincludes que explora tu sistema en búsqueda de ficheros de cabecera que necesiten ser fijados. Digamos que encuentra ficheros de cabecera de Glibc. Las corregirá y acabarán en $LFS/static/lib/gcc-lib/i686-pc-linux-gnu/3.2. Más tarde, en el capítulo 6, instalarás Glibc que instalará los ficheros de cabecera en /usr/include. A continuación instalarás otros programas que usarán las cabeceras de Glibc y GCC las buscará en /static/lib/gcc-lib antes de mirar en /usr/include, con el resultado de que encontrará y utilizará los ficheros de cabecera de Glibc corregidos provenientes de tu sistema anfitrión, que posiblemente sean incompatibles con la versión de Glibc usada actualmente en el sistema LFS.
Como toque final crearemos el enlace simbólico $LFS/static/bin/cc. Muchos programas y guiones intentan ejecutar cc en lugar de gcc. Esto es así para hacer que los programas sean genéricos y utilizables en todo tipo de sistemas Unix. No todo el mundo tiene GNU CC instalado. La simple ejecución de cc (Compilador de C) deja al usuario libre para decidir el compilador de C a instalar. El enlace simbólico apuntará al compilador por defecto del sistema.
ln -s gcc $LFS/static/bin/cc |