Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Instalar Dependencias para GCCInstalar Java en GNU/Linux

Instalar GCC desde cero

Página - 1Página - 2




Instalar GCC desde cero




Copyright

Copyright © José Luis Lara Carrascal  2007-2024   http://manualinux.es



Sumario

Introducción
Instalar GCC 13.2.0
Configurar el sistema para el uso de GCC 13.2.0
Establecer el RPATH correspondiente
Optimizaciones de CPU para GCC
Niveles de optimización soportados por GCC
Optimizaciones adicionales para GCC
Instalar GCC 11.3.0
Configurar el sistema para el uso de GCC 11.3.0
Instalar GCC 6.5.0
Configurar el sistema para el uso de GCC 6.5.0
Enlaces




Instalar GCC 6.5.0

Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado GCC 6.5.0 para la elaboración de este documento.

* GCC - (8.2.0)
* Gawk - (4.2.1)
* M4 - (1.4.18)
* Libtool - (2.4.6)
* Make - (4.2.1)
* Pkg-config - (0.29.2)
* Bison - (3.1)
* Flex - (2.6.4)
* Automake - (1.16.1)
* Autoconf - (2.69)
* Gettext - (0.19.8.1)
* Gperf - (3.1)
* Texinfo - (6.5)

Librerías de Desarrollo

* Gmp - (6.1.2)
* Mpfr - (4.0.1)
* Mpc - (1.1.0)
* ISL - (0.18)
* GLib - (2.58.1)
* GTK+ - (2.24.32)
* Libart - (2.3.17)



Descarga

gcc-6.5.0.tar.xz  |  ecj-4.9.jar

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf gcc-6.5.0.tar.xz
$ cp ecj-4.9.jar gcc-6.5.0/ecj.jar
$ mkdir gcc-build_6.5.0
$ cd gcc-build_6.5.0
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
$ ../gcc-6.5.0/configure --enable-shared --enable-threads=posix --enable-__cxa_atexit \
--enable-clocale=gnu --enable-languages=fortran,java,objc --enable-java-awt=gtk \
--prefix=/opt/gcc6 --program-suffix=6


Explicación de los comandos

cp ecj-4.9.jar gcc-6.5.0/ecj.jar : Copiamos el archivo jar que contiene el compilador Java de Eclipse al directorio raíz del código fuente de GCC. Dicho compilador es utilizado por GCJ para analizar los archivos de código fuente escritos en Java. En el proceso de instalación, dicho archivo será ubicado en /opt/gcc6/share/java/ecj.jar, y GCJ lo utilizará a través de un ejecutable binario ubicado en la ruta /opt/gcc6/libexec/gcc/{arquitectura}/6.5.0/ecj1.

mkdir gcc-build_6.5.0
: Creamos un directorio de compilación, ya que GCC no permite que se compile directamente en el directorio de las fuentes.

export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH
: Establecemos la variable de entorno PKG_CONFIG_PATH correspondiente para poder compilar correctamente el lenguaje de programación Java, en sistemas de 64 bits multiarquitectura. El error que soluciona es el siguiente:

/usr/include/glib-2.0/glib/gmacros.h:277:53: error: size of array '_GStaticAssertCompileTimeAssertion_0' is negative
 #define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED


Si no tenemos pensado compilar el soporte de 32 bits, dicha variable de entorno no es necesario establecerla.

--enable-shared
: Compila las librerías compartidas.
--enable-threads=posix : Selecciona la librería genérica POSIX/Unix98 para el soporte de hilos.
--enable-__cxa_atexit : Opción necesaria para una correcta compilación de c++.
--enable-clocale=gnu : Evita un error en la generación de las locales, en el caso de que estén incompletas.
--enable-languages=fortran,java,objc : Compila los lenguajes de programación Fortran, Java, y Objetive C, además de los predefinidos, C y C++.
--enable-java-awt=gtk : Añade el soporte de AWT con GTK+ como librería de interfaz gráfica a Libgcj.
--prefix=/opt/gcc6 : Instala el compilador en /opt/gcc6.

--program-suffix=6 : Añadimos un sufijo a los binarios ejecutables instalados para poder diferenciarlos de otras versiones de GCC que tengamos instaladas en nuestro sistema, empezando por la principal del mismo.

Parámetros de configuración opcionales

--disable-bootstrap : Si por la razón que sea, tenemos que volver a recompilar el paquete, utilizando el mismo compilador de la versión que vamos a instalar, añadiendo esta opción evitaremos que los lenguajes C y C++ se recompilen a sí mismos, y anularemos el proceso predefinido de compilación en tres fases. Si la versión utilizada es de la misma serie, también se puede utilizar esta opción. Realizar antes una copia de seguridad de la versión instalada, porque la instalación de la nueva versión sobrescribirá los archivos de la misma.

--with-default-libstdcxx-abi=gcc4-compatible : Hace compatible la versión de Libstdc++ de esta versión, con binarios compilados con versiones de la serie 4 de GCC y versiones inferiores a la 3.9 de Clang, además de las versiones superiores de GCC que se hayan compilado con esta misma opción de configuración del paquete.

--disable-multilib : Si no tenemos intención alguna de compilar código de 32 bits en sistemas de 64 bits multiarquitectura, con esta versión concreta de GCC, añadiremos esta opción para acelerar la compilación del paquete.

Compilación

$ make

Parámetros de compilación opcionales

Instalación como root

$ su -c "make install-strip"

Borrar las locales adicionales instaladas

$ su
# for i in be ca da de el eo fi fr hr id ja nl pt_BR ru sr sv tr tk uk vi zh_CN zh_TW ; do \
rm -rf /opt/gcc6/share/locale/$i &> /dev/null ; \
done

Estadísticas de Compilación e Instalación de GCC 6.5.0

Estadísticas de Compilación e Instalación de GCC 6.5.0
CPU AMD Phenom(tm) II X4 965 Processor
MHz 3415.709
RAM 4096 MB
Sistema de archivos XFS
Versión del Kernel 4.18.16-ck1 SMP PREEMPT x86_64
Modo de frecuencia de la CPU ondemand
Versión de Glibc 2.28
Enlazador dinámico GNU gold (Binutils 2.31.1) 1.16
Compilador GCC 8.2.0
Parámetros de compilación -j4
Ocupación de espacio en disco del proceso de compilación 7,3 GB
Tiempo de compilación 1h 21' 15"
Archivos instalados 5.324
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 73
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 339,7 MB

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

gcc-6.5.0-scripts.tar.gz

$ su
# tar zxvf gcc-6.5.0-scripts.tar.gz
# cd gcc-6.5.0-scripts
# ./Desinstalar_gcc-6.5.0

La desinstalación del compilador no incluye las librerías compartidas (.so) para evitar problemas de dependencias en el caso de que hayamos compilado algún programa con esta versión de GCC.

Copia de Seguridad como root

$ su
# tar zxvf gcc-6.5.0-scripts.tar.gz
# cd gcc-6.5.0-scripts
# ./Respaldar_gcc-6.5.0

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_gcc-6.5.0

Soporte de optimizaciones para nuevos procesadores en GCC 6

En GCC 6 se añade soporte de optimizaciones para los siguientes procesadores:

Procesadores Parámetros de optimización
Intel
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. -march=lakemont -mtune=lakemont
Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. -march=skylake -mtune=skylake
Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. -march=skylake-avx512 -mtune=skylake-avx512
AMD
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). -march=znver1 -mtune=znver1



Configurar el sistema para el uso de GCC 6.5.0

1) /etc/ld.so.conf

Añadimos la ruta a las librerías en el archivo /etc/ld.so.conf.

include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/lib
/usr/lib/qt3/lib
/usr/local/lib
/opt/e17/lib
/opt/gcc11/lib64
/opt/gcc11/lib
/opt/gcc10/lib64
/opt/gcc10/lib
/opt/gcc9/lib64
/opt/gcc9/lib
/opt/gcc8/lib64
/opt/gcc8/lib
/opt/gcc7/lib64
/opt/gcc7/lib
/opt/gcc6/lib64
/opt/gcc6/lib


Cuando lo hayamos editado y guardado ejecutamos la actualización de la caché de las librerías compartidas.

$ su -c "ldconfig -v"

2) Añadir la ruta a los binarios y las páginas de manual a nuestro PATH

2a) Variable de entorno PATH de usuario

Editamos el archivo de nuestro home, ~/.bashrc (si no existe lo creamos) y añadimos lo siguiente al final del mismo.

export PATH=/opt/gcc6/bin:$PATH
export MANPATH=/opt/gcc6/share/man:$MANPATH


Si estamos siguiendo el manual lo añadimos a la variable de entorno anterior.

export PATH=/opt/gcc11/bin:/opt/gcc10/bin:/opt/gcc9/bin:/opt/gcc8/bin:/opt/gcc7/bin:\
/opt/gcc6/bin:$PATH
export MANPATH=/opt/gcc11/share/man:/opt/gcc10/share/man:/opt/gcc9/share/man:\
/opt/gcc8/share/man:/opt/gcc7/share/man:/opt/gcc6/share/man:$MANPATH

2b) Variable de entorno PATH del sistema

Si queremos establecer una variable de entorno global del sistema, abrimos un editor de texto y añadimos lo siguiente.

#!/bin/sh

export PATH=/opt/gcc6/bin:$PATH
export MANPATH=/opt/gcc6/share/man:$MANPATH


Si estamos siguiendo el manual lo añadimos a la variable de entorno anterior.

#!/bin/sh

export PATH=/opt/gcc11/bin:/opt/gcc10/bin:/opt/gcc9/bin:/opt/gcc8/bin:/opt/gcc7/bin:\
/opt/gcc6/bin:$PATH
export MANPATH=/opt/gcc11/share/man:/opt/gcc10/share/man:/opt/gcc9/share/man:\
/opt/gcc8/share/man:/opt/gcc7/share/man:/opt/gcc6/share/man:$MANPATH

Lo guardamos con el nombre gcc.sh, y lo instalamos en /etc/profile.d.

$ su -c "install -m755 gcc.sh /etc/profile.d"

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema. La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2c) Lectura de las páginas de manual

$ man gcc6
$ man gfortran6
$ man gcj6

3) Uso de GCC 6.5.0

Esto está ampliamente explicado en este apartado, sólo cambia el número del sufijo de la versión a utilizar.

$ export LDFLAGS+=' -L/usr/lib64 -L/usr/local/lib64'
$ export CC=gcc6 CXX=g++6 {FC,F90,F95,F77}=gfortran6

En cuanto a la creación de los alias de Bash para facilitar la ejecución de las variables. Abrimos con un editor de texto, el archivo de configuración personal, ~/.bashrc, si no existe lo creamos, y añadimos lo siguiente al final del contenido del mismo:

alias envgcc6="export CC=gcc6 CXX=g++6 {FC,F90,F95,F77}=gfortran6"

Para el caso específico que ya explico más arriba de uso de compilador Fortran con las GNU Autotools, añadimos lo siguiente:

alias envgfortran6="mkdir -p /tmp/bin; ln -sf /opt/gcc6/bin/gfortran6 /tmp/bin/gfortran; export PATH=/tmp/bin:$PATH"
alias ungfortran6="PATH=`echo $PATH | sed -e 's:/tmp/bin::'`; rm -rf /tmp/bin"

Y si queremos añadir también alias para las variables de entorno LDFLAGS para establecer el RPATH correspondiente, en compilación de código escrito en C++, Fortran, y compatible con OpenMP, nos quedaría así:

alias lstdc++6="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib64 -lstdc++"
alias lgfortran6="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib64 -lgfortran"
alias lgomp6="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib64 -lgomp"

En sistemas de 64 bits multiarquitectura los complementamos con los siguientes alias, para el modo de compilación de 32 bits.

alias lstdc++6-32="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib -lstdc++"
alias lgfortran6-32="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib -lgfortran"
alias lgomp6-32="export LDFLAGS+=" -Wl,-rpath,/opt/gcc6/lib -lgomp"



Enlaces  


Compiladores Caché - Ccache >> Manual de instalación y configuración de Ccache, un compilador caché que puede llegar a acelerar el tiempo de recompilación de los programas escritos en C y C++, hasta 10 veces.

Compiladores Caché - F90cache >> Manual de instalación y configuración de F90cache, la versión para Fortran de Ccache.

Utilidades - PatchELF >> Manual de instalación y configuración de PatchELF, una utilidad de línea de comandos, que permite modificar el cargador dinámico predefinido, y la ruta de búsqueda preferente (RPATH) de las dependencias binarias de un ejecutable en formato ELF.

http://gcc.gnu.org >> La web de GCC.


Foro Galería Blog


Página - 1Página - 2

Actualizado el 10-03-2024

Instalar GCC desde cero

Instalar Dependencias para GCCInstalar Java en GNU/Linux