GCC-3.4.3

Introducción a GCC

El paquete GCC contiene compiladores GNU. Es útil para compilar programas escritos en C, C++, Fortran, Java, Objective C y Ada.

Información sobre el paquete

Dependencias de GCC

Recomendada

Instalación de GCC

Si planeas compilar Ada necesitarás instalar GNAT temporalmente para satisfacer la dependencia circular cuando recompìlas GCC para incluir Ada.

Información sobre el paquete

Dependencias de GNAT

Requerida

Tcsh-6.13.00

Instalación de GNAT

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

Regreso a la instalación de GCC

Instala GCC ejecutando los siguientes comandos:

[Importante]

Importante

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

[Nota]

Nota

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

Explicación de los comandos

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.

Contenido

Programas instalados: addr2name.awk, cc, c++, cpp, f77, g++, g77, gcc, gccbug, gcj, gcjh, gcov, gij, gnat, gnatbind, gnatbl, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref, gpr2make, gprcmd, grepjar, jar, jcf-dump, jv-convert, jv-scan, rmic, rmiregistry and architecture specific names for c++, g++, gcc, gcc-3.4.3, gcj y gcjh
Librerías instaladas: lib-org-w3c-dom.[so,a], lib-org-xml-sax.[so,a], libffi-2.00-beta.so, libffi.[so,a], libfrtbegin.a, libg2c.[so,a], libgcc_s.so, libgcj.[so,a], libobjc.[so,a], libstdc++.[so.6,a], libsupc++.a y otras numerosas librerías y ejecutables en tiempo de ejecución en el directorio /usr/lib/gcc
Directorios instalados: /usr/include/c++, /usr/include/gcj, /usr/include/gnu, /usr/include/java, /usr/include/javax, /usr/lib/gcc, /usr/lib/security, /usr/share/gnat y /usr/share/java

Descripciones cortas

Las descripciones de algunos programas y librerías no se listan aquí, pero pueden encontrase en ../../lfs-es-SVN/chapter06/gcc.html#contents-gcc.

addr2name.awk

Emula la funcionalidad de addr2line.

f77

Enlace simbólico a g77, creado por razones de compatibilidad.

g77

El compilador de Fortran invocado por gcc.

gcj

Compilador en tiempo continuado para el lenguaje Java.

gcjh

Genera ficheros de cabecera a partir de ficheros de clases de Java.

gij

El intérprete GNU para código de bytes Java.

gnat

El compilador Ada invocado por gcc.

gnatbind

Vincula los objetos compilados.

gnatbl

El enlazador de Ada.

gnatchop

Renombra ficheros para que cumplan con las convenciones de nombres de ficheros del Ada estándar.

gnatclean

Elimina ficheros asociados con un proyecto GNAT.

gnatfind

Buscador de definiciones/usos de GNAT.

gnatkr

Sirve para determinar el nombre truncado de un fichero dado, cuando se trunca a un largo máximo especificado.

gnatlink

Se usa para enlazar programas y construir un ejecutable.

gnatls

Navegador de unidades compiladas.

gnatmake

Una utilidad automática para make.

gnatname

Lista los ficheros asociados con un proyecto GNAT.

gnatprep

El preprocesador externo de GNAT.

gnatxref

El referenciador cruzado de GNAT.

gpr2make

Herramienta usada para crear Makefiles que soportan compilazión con múltiples lenguajes.

gprcmd

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.

grepjar

Busca un patrón en ficheros jar.

jar

Herramienta de archivado para archivos Java.

jcf-dump

Muestra información sobre ficheros de clases Java.

jv-convert

Convierte ficheros de una codificación a otra.

jv-scan

Muestra información sobre ficheros fuente Java.

rmic

Genera fragmentos para Remote Method Invocation.

rmiregistry

Inicia un registro de objetos remotos en el anfitrión actual.

Last updated on 2005-04-24 13:18:42 +0200