El paquete GCC contiene compiladores GNU. Es útil para compilar programas escritos en C, C++, Fortran, Java, Objective C y Ada.
Descarga (HTTP): http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.4.3/gcc-3.4.3.tar.bz2
Descarga (FTP): ftp://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.4.3/gcc-3.4.3.tar.bz2
Suma MD5 del paquete: e744b30c834360fccac41eb7269a3011
Tamaño del paquete: 27.4 MB
Estimación del espacio necesario en disco: 1.62 GB
Tiempo estimado de construcción: 45.50 SBU (build and install all compilers)
Parche requerido: http://www.linuxfromscratch.org/blfs/downloads/svn/gcc-3.4.3-no_fixincludes-1.patch
Parche requerido: http://www.linuxfromscratch.org/blfs/downloads/svn/gcc-3.4.3-linkonce-1.patch
Banco de pruebas: http://mirrors.rcn.net/pub/sourceware/gcc/releases/gcc-3.4.3/gcc-testsuite-3.4.3.tar.bz2
Suma MD5 del banco de pruebas: b4fff6ce0a038021b9e507917abb9a07
Si planeas compilar Ada necesitarás instalar GNAT temporalmente para satisfacer la dependencia circular cuando recompìlas GCC para incluir Ada.
Descarga (FTP): ftp://cs.nyu.edu/pub/gnat/3.15p/gnat-3.15p-i686-pc-redhat71-gnu-bin.tar.gz
Suma MD5 del paquete: 57c060cd1ccef8b1ae9165b11d98780a
Tamaño del paquete: 13.4 MB
Tiempo estimado de construcción: 0.01 SBU
Instala GNAT ejecutando los siguientes comandos:
./doconfig
Este guión te preguntará cómo y dónde quieres instalar GNAT. Para evitar conflictos con el gcc del sistema, instalaremos este paquete en un directorio aparte, que pueda ser borrado más adelante.
En cuanto a las preguntas que hace el guión doconfig, teclea 3 para responder a la primera pregunta y /opt/gnat para responder a la segunda.
Para finalizar la instalación, ejecuta como usuario root:
./doinstall
El compilador GNAT puede ser invocado ejecutando el binario gcc que el guión acaba de instalar.
Ahora puedes eliminar el directorio de las fuentes de GNAT:
cd .. &&
rm -rf gnat-3.15p-i686-pc-linux-gnu-bin
Prepara la compilación de GCC colocando el gcc de GNAT al principio de la variable PATH usando los siguientes comandos:
PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH
Instala GCC ejecutando los siguientes comandos:
El proceso de instalación sobreescribirá el compilador y las librerías existentes de GCC. Es muy recomendable que tengas instalados los paquetes Tcl, Expect y DejaGnu, así como tener desempaquetado el paquete del banco de pruebas de GCC antes de empezar la construcción.
No ejecutes el comando make install hasta estar seguro de que la construcción ha ido bién. Puedes comparar los resultados de las pruebas con los que se encuentran en http://gcc.gnu.org/ml/gcc-testresults/. También hay los resultados de las pruebas en un plataforma i686 generados en un sistema LFS-SVN-20050316 en http://linuxfromscratch.org/~randy/gcc343_test.txt. Igualmente, deberías consultar la información que se encuentra en la sección GCC-Fase 2 del Capítulo 5 del libro LFS (../../lfs-es-SVN/chapter05/gcc-pass2.html).
Algunos de los programas Java instalados por el paquete GCC entran en conflicto (tienen el mismo nombre) con programas instalados por el paquete JDK-1.5.0. Si instalas el lenguaje Java del paquete GCC pero desearias usar por defecto los programas de JDK, asegurate de que $JAVA_HOME/bin aparece antes de /usr/bin en tu variable PATH tras completar la instalación de GCC.
patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch &&
patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch &&
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in &&
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-3.4.3/configure --prefix=/usr --libexecdir=/usr/lib \
--enable-shared --enable-threads=posix --enable-__cxa_atexit \
--enable-clocale=gnu --enable-languages=c,c++,objc,f77,ada,java &&
make bootstrap &&
make -C gcc gnatlib-shared &&
make -C gcc gnattools &&
make -k check &&
../gcc-3.4.3/contrib/test_summary
Ahora, como usuario root:
make install &&
ln -v -sf ../usr/bin/cpp /lib &&
ln -v -sf gcc /usr/bin/cc &&
ln -v -sf g77 /usr/bin/f77 &&
chown -v -R root:root \
/usr/lib/gcc/i686-pc-linux-gnu/3.4.3/include &&
chown -v -R root:root \
/usr/lib/gcc/i686-pc-linux-gnu/3.4.3/ada{lib,include}
Hay un error en la instalación de las cabeceras de la interfaz libffi. El fichero ffitarget.h específico para la arquitectura no es instalado. Si has incluido Java como uno de los lenguajes a instalar, instala el fichero ausente usando el siguiente comando. Sustituye [arch] en el comando con la ruta al directorio apropiado para tu sistema.
install -v -m644 libffi/src/[arch]/ffitarget.h \
/usr/include
Como usuario root, elimina la instalación de GNAT:
rm -rf /opt/gnat
Ahora, como usuario sin privilegios, restaura tu antiguo PATH:
export PATH=$PATH_HOLD &&
unset PATH_HOLD
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in: Este comando suprime la instalación de libiberty.a pues en su lugar se usa la versión suministrada porBinutils.
mkdir ../gcc-build; cd ../gcc-build: La documentación de GCC recomienda construir el paquete en un directorio de construcción dedicado.
--enable-shared --enable-threads=posix --enable-__cxa_atexit: Se necesita estos comandos para construir las librerías C++ según los estandares publicados.
--enable-clocale=gnu: Este comando es para seguridad ante datos de locale incompletos.
--enable-languages=c,c++,objc,f77,ada,java: Este comando identifica los lenguajes a construir. Puedes modificar este comando para eliminar los lenguajes no deseados.
make -C gcc gnatlib-shared: Este comando construye las librerías estyáticas y compartidas de Ada. Saltate este paso si no has activado Ada acomo uno de los lenguajes.
make -C gcc gnattools: Este comando construye las herramientas de desarrollo y binarios de Ada. Saltate este paso si no has activado Ada acomo uno de los lenguajes
make -k check: Este comando ejecuta el banco de pruebas sin detenerse en los errores encontrados.
../gcc-3.4.3/contrib/test_summary: Este comando producirá un resumen de los resultados del banco de pruebas. Puedes añadir | grep -A7 Summ para producir una versión aún más condensada del sumario. Puede que también quieras redirigir la salida a un fichero para su posterior revisión y comparación..
ln -sf ../usr/bin/cpp /lib: Este comando crea un enlace al preprocesor C, pues algunos paquetes esperan que esté instalado en el directorio /lib.
ln -sf gcc /usr/bin/cc; ln -sf g77 /usr/bin/f77: Se crean estos enlaces porque algunos programas se refieren a los compiladores C y Fortran con un nombre alternativo.
chown -R root:root /usr/lib/gcc/i686-pc-linux-gnu/...: Si el paquete se construye con un usuario diferente a root, la propiedad de los directorios include y adalib instalados (y de su contenido) será incorrecta. Estos comandos cambian la propiedad a root:root. Omite el comando de cambio para el directorio de Ada si no has incluido Ada como uno de los lenguajes instalados.
Las descripciones de algunos programas y librerías no se listan aquí, pero pueden encontrase en ../../lfs-es-SVN/chapter06/gcc.html#contents-gcc.
Emula la funcionalidad de addr2line.
Enlace simbólico a g77, creado por razones de compatibilidad.
El compilador de Fortran invocado por gcc.
Compilador en tiempo continuado para el lenguaje Java.
Genera ficheros de cabecera a partir de ficheros de clases de Java.
El intérprete GNU para código de bytes Java.
El compilador Ada invocado por gcc.
Vincula los objetos compilados.
El enlazador de Ada.
Renombra ficheros para que cumplan con las convenciones de nombres de ficheros del Ada estándar.
Elimina ficheros asociados con un proyecto GNAT.
Buscador de definiciones/usos de GNAT.
Sirve para determinar el nombre truncado de un fichero dado, cuando se trunca a un largo máximo especificado.
Se usa para enlazar programas y construir un ejecutable.
Navegador de unidades compiladas.
Una utilidad automática para make.
Lista los ficheros asociados con un proyecto GNAT.
El preprocesador externo de GNAT.
El referenciador cruzado de GNAT.
Herramienta usada para crear Makefiles que soportan compilazión con múltiples lenguajes.
Utilidad usada por Makefile.generic para manejar construcciones multilenguaje. Proporciona un conjunto de comandos para que los Makefiles no dependan de utilidades Unix que no están disponibles en todos los objetivos.
Busca un patrón en ficheros jar.
Herramienta de archivado para archivos Java.
Muestra información sobre ficheros de clases Java.
Convierte ficheros de una codificación a otra.
Muestra información sobre ficheros fuente Java.
Genera fragmentos para Remote Method Invocation.
Inicia un registro de objetos remotos en el anfitrión actual.
Last updated on 2005-04-24 13:18:42 +0200