GCC-3.3.3

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

Tiempo estimado de construcción:  11.7 SBU
Espacio requerido en disco:       294 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

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.

Desempaqueta los paquetes GCC-core y GCC-g++, que se desempaquetarán dentro del mismo directorio. Además debes extraer el paquete GCC-testsuite. El paquete completo GCC contiene otros compiladores más. Las instrucciones para construirlos las puedes encontrar en http://www.escomposlinux.org/lfs-es/blfs-es-CVS/general/gcc.html (el original en inglés está en http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html).

Aplica primero el parche No-Fixincludes (pero no el parche Specs) , que también se usó en el capítulo anterior:

patch -Np1 -i ../gcc-3.3.3-no_fixincludes-1.patch

Ahora aplica una sustitución sed que suprimirá la instalación de libiberty.a. Queremos usar la versión de libiberty.a suministrada por Binutils:

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in

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

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

Ahora prepara GCC para su compilación:

../gcc-3.3.3/configure --prefix=/usr \
    --enable-shared --enable-threads=posix \
    --enable-__cxa_atexit --enable-clocale=gnu \
    --enable-languages=c,c++

Compila el paquete:

make
[Importante]

Importante

El banco de pruebas para GCC de este capítulo se considera crítico. No te lo saltes bajo ninguna circunstancia.

Comprueba los resultados, pero no pares en los errores (recordarás que hay varios conocidos):

make -k check

Las notas para el banco de pruebas que hay en “GCC-3.3.3 - Fase 2” son aún más apropiadas aquí. Asegúrate de consultarlas si tienes alguna duda.

Ahora instala el paquete:

make install

Algunos paquetes esperan que el preprocesador de C esté instalado en el directorio /lib. Para dar soporte a estos paquetes, crea un enlace simbólico:

ln -s ../usr/bin/cpp /lib

Muchos paquetes usan el nombre cc para llamar al compilador de C. Para satisfacer a estos paquetes, crea un enlace simbólico:

ln -s gcc /usr/bin/cc
[Nota]

Nota

En este punto es muy recomendable repetir la comprobación que realizamos anteriormente en este capítulo. Vuelve a “Reajustar las herramientas” y repite las comprobaciones. Si los resultados son malos, entonces es muy posible que erróneamente hayas aplicado el parche Specs para GCC del Capítulo 5.

Contenido de GCC

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

Descripciones cortas

cpp es el preprocesador de C. Lo usa el compilador para tener las sentencias #include, #define y similares expandidas en los ficheros fuente.

g++ es el compilador de C++.

gcc es el compilador de C. Se usa para traducir el código fuente de un programa a código ensamblador.

gccbug es un guión del interprete de comandos que ayuda a crear buenas notificaciones de errores.

gcov es una herramienta para pruebas de rendimiento. Se usa para analizar programas y encontrar qué optimizaciones tendrán el mayor efecto.

libgcc* contienen el soporte en tiempo de ejecución para gcc.

libstdc++ es la librería estándar de C++. Contiene muchas funciones de uso frecuente.

libsupc++ proporciona rutinas de soporte para el lenguaje de programación c++.