Tamaño: 8668
Comentario:
|
Tamaño: 8937
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 5: | Línea 5: |
'''''"Con la publicación de este manual se oficializa dentro de la web el apartado dedicado a este indispensable compilador, y se incluye la versión más reciente del mismo, además de las otras versiones más recientes de otras series del compilador predefinido del mundo '''''''GNU/Linux'''.<<BR>> <<BR>> De lo que se trata es de que podamos siempre compilar un programa, y para eso tendremos que tener dos o tres versiones diferentes de '''GCC''', aunque el número de versiones que podamos llegar a tener es ilimitado. La configuración del sistema para que puedan convivir las diferentes versiones de '''GCC''' es otro de los aspectos (incluso yo diría el más importante) más destacable de este documento.<<BR>> <<BR>> Los lenguajes soportados en la compilación de '''GCC''' son los que habitualmente uso: '''C, C++''' y '''Objetive C'''. Para terminar, y al igual que expliqué en la introducción del manual del [[http://manualinux.eu/kernel.html|Kernel]], esto no es un manual genérico de instalación de '''GCC''', sino la radiografía de las instalaciones que un usuario de '''GNU/Linux '''viene haciendo hace ya unos cuantos años, sin haber tenido casi nunca, ningún tipo de problema en la convivencia de las diferentes versiones de '''GCC''' que tiene en su sistema '''GNU/Linux'''. Desde el 8 de mayo de 2012 se incluye también la instalación del lenguaje [[http://gcc.gnu.org/fortran/|Fortran]]. Y desde el 13 de marzo de 2015, la instalación del lenguaje [[https://gcc.gnu.org/java/|Java]], que ha sido retirado a partir de '''GCC 7'''."'' ''' ''' | '''''"Con la publicación de este manual se oficializa dentro de la web el apartado dedicado a este indispensable compilador, y se incluye la versión más reciente del mismo, además de las otras versiones más recientes de otras series del compilador predefinido del mundo '''''''GNU/Linux'''.'' ''De lo que se trata es de que podamos siempre compilar un programa, y para eso tendremos que tener dos o tres versiones diferentes de '''GCC''', aunque el número de versiones que podamos llegar a tener es ilimitado. La configuración del sistema para que puedan convivir las diferentes versiones de '''GCC''' es otro de los aspectos (incluso yo diría el más importante) más destacable de este documento.'' ''Los lenguajes soportados en la compilación de '''GCC''' son los que habitualmente uso: '''C, C++''' y '''Objetive C'''. Para terminar, y al igual que expliqué en la introducción del manual del [[http://manualinux.eu/kernel.html|Kernel]], esto no es un manual genérico de instalación de '''GCC''', sino la radiografía de las instalaciones que un usuario de '''GNU/Linux '''viene haciendo hace ya unos cuantos años, sin haber tenido casi nunca, ningún tipo de problema en la convivencia de las diferentes versiones de '''GCC''' que tiene en su sistema '''GNU/Linux'''. Desde el 8 de mayo de 2012 se incluye también la instalación del lenguaje [[http://gcc.gnu.org/fortran/|Fortran]]. Y desde el 13 de marzo de 2015, la instalación del lenguaje [[https://gcc.gnu.org/java/|Java]], que ha sido retirado a partir de '''GCC 7'''."'' ''' ''' |
Línea 66: | Línea 70: |
make && make check | make -j<cpu a utilizar> && make check |
Línea 79: | Línea 83: |
make | make -j<cpu a utilizar> |
Línea 90: | Línea 94: |
Línea 94: | Línea 97: |
Línea 96: | Línea 98: |
Línea 100: | Línea 101: |
Línea 104: | Línea 104: |
Línea 106: | Línea 105: |
Línea 117: | Línea 115: |
make | make -j<cpu a utilizar> |
Línea 119: | Línea 117: |
La razón de los comandos efectuados en el config vea [[http://srvbioinf1.utalca.cl/wiki/cluster/gcc#Explicaci.2BAPM-n_de_los_comandos_utilizados_en_el_configure-1|aquí]] | |
Línea 120: | Línea 119: |
Instalar {{{ make install-strip }}} |
|
Línea 140: | Línea 146: |
make | make -j<cpu a utilizar> |
Línea 192: | Línea 198: |
Instalar GCC
Tabla de Contenidos
Introducción:
"Con la publicación de este manual se oficializa dentro de la web el apartado dedicado a este indispensable compilador, y se incluye la versión más reciente del mismo, además de las otras versiones más recientes de otras series del compilador predefinido del mundo 'GNU/Linux.
De lo que se trata es de que podamos siempre compilar un programa, y para eso tendremos que tener dos o tres versiones diferentes de GCC, aunque el número de versiones que podamos llegar a tener es ilimitado. La configuración del sistema para que puedan convivir las diferentes versiones de GCC es otro de los aspectos (incluso yo diría el más importante) más destacable de este documento.
Los lenguajes soportados en la compilación de GCC son los que habitualmente uso: C, C++ y Objetive C. Para terminar, y al igual que expliqué en la introducción del manual del Kernel, esto no es un manual genérico de instalación de GCC, sino la radiografía de las instalaciones que un usuario de GNU/Linux viene haciendo hace ya unos cuantos años, sin haber tenido casi nunca, ningún tipo de problema en la convivencia de las diferentes versiones de GCC que tiene en su sistema GNU/Linux. Desde el 8 de mayo de 2012 se incluye también la instalación del lenguaje Fortran. Y desde el 13 de marzo de 2015, la instalación del lenguaje Java, que ha sido retirado a partir de GCC 7."
Librarias requeridas:
Una sería de librerías requeridas para poder lograr la implementación de GCC son necesarias, entre las que encontramos:
- GMP - the GNU Multiple Precision Arithmetic Library.
- MPFR - the GNU Multiple-precision floating-point rounding library, que depende de GMP.
- MPC - the GNU Multiple-precision C library. con dependencia en GMP and MPFR.
- ISL - Integer Set Library
Todas estás librerías serán instaladas en el directorio /opt/util_compiler, por lo que los prefix requeridos deben apuntar a esa ruta.
GMP
Descargar el paquete de gmp. Actualmente se está utilizando la versión 6.1.0
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
Una vez descargado ejecutamos los siguientes pasos:
bunzip2 gmp-6.1.0.tar.bz2 tar xvf gmp-6.1.0.tar cd gmp-6.1.0 ./configure --disable-shared --enable-static --prefix=/opt/util_compiler/ make make check
Luego instalar como súper usuario (root)
make install
MPFR
Descargar la versión actual (3.1.4) de MPFR desde la siguiente urlftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 usando wget,
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
Ejecutar los siguientes pasos:
bunzip2 mpfr-3.1.4.tar.bz2 tar xvf mpfr-3.1.4.tar cd mpfr-3.1.4 ./configure --disable-shared --enable-static --prefix=/opt/util_compiler --with-gmp=/opt/util_compiler make && make check
Y como super usuario
make install
MPC
Descargar e instalar la versión 1.0.3 siguiendo los siguientes pasos:
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz tar zxvf mpc-1.0.3.tar.gz cd mpc-1.0.3 ./configure --disable-shared --enable-static --prefix=/opt/util_compiler --with-gmp=/opt/util_compiler --with-mpfr=/opt/util_compiler make -j<cpu a utilizar> && make check
Como usuario root:
make install
ISL
La versión a utilizar será 0.16.1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2 ./configure --with-gmp-prefix=/opt/util_compiler --disable-shared --enable-static --prefix=/opt/util_compiler make -j<cpu a utilizar>
Como usuario root:
make install
GCC 7.1.0
Descargar el source desde la url oficial, https://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.gz y descomprimir
wget https://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.gz tar xvf gcc-7.1.0.tar.gz
Creamos un directorio de compilación, ya que las últimas versiones de GCC no permite que se compile directamente en el directorio de las fuentes,
mkdir build_gcc cd build_gcc
El siguiente paso es compilar
../gcc-7.1.0/configure --enable-shared --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++,fortran,objc \ --prefix=/path/to/install --disable-multilib \ --with-gmp=/opt/util_compiler \ --with-mpc=/opt/util_compiler \ --with-mpfr=/opt/util_compiler \ --with-isl=/opt/util_compiler make -j<cpu a utilizar>
La razón de los comandos efectuados en el config vea aquí
Instalar
make install-strip
GCC 6.4.0
Descargamos desde la url https://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz utilizando wget y descomprimimos
https://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz tar xvf gcc-6.4.0.tar.xz
Procedemos a compilar:
mkdir build-gcc cd build-gcc ../gcc-6.4.0/configure --enable-shared --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++,fortran,objc \ --prefix=/path/to/install --disable-multilib \ --with-gmp=/opt/util_compiler \ --with-mpc=/opt/util_compiler \ --with-mpfr=/opt/util_compiler \ --with-isl=/opt/util_compiler make -j<cpu a utilizar>
Instalamos como root
make install-strip
GCC 6.3.0
Descargamos desde la url https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz utilizando wget y descomprimimos
wget https://ftp.gnu.org/gnu/gcc/gcc-6.3.0/gcc-6.3.0.tar.gz tar xvf gcc-6.3.0.tar.gz
Procedemos a compilar:
mkdir build-gcc cd build-gcc ../gcc-6.3.0/configure --enable-shared --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++,fortran,objc \ --prefix=/path/to/install --disable-multilib \ --with-gmp=/opt/util_compiler \ --with-mpc=/opt/util_compiler \ --with-mpfr=/opt/util_compiler \ --with-isl=/opt/util_compiler make
Instalamos como root
make install-strip
Explicación de los comandos utilizados en el configure
mkdir build-gcc: Creamos un directorio de compilación, ya que GCC no permite que se compile directamente en el directorio de las fuentes.
--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=c,c++,fortran,objc: Compila los lenguajes de programación Fortran, Java, y Objetive C, además de los predefinidos, C y C++. También está la opción de agregar el lenguaje Java, para para el caso no es necesario.
--disable-multilib: Se deshabilita la opción de multilibrerías, por ejemplo x32 y x64 en el mismo equipo.
--prefix=/path/to/install: Instala el compilador en la ruta que hemos definid.
Opcionales:
--enable-java-awt=gtk: Añade el soporte de AWT con GTK+ como librería de interfaz gráfica a Libgcj. (opcional caso de implementar gcc-java).
--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, como es en este caso en el manual, 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 sobreescribirá los archivos de la misma.
--with-default-libstdcxx-abi=gcc4-compatible: Añadiendo esta opción, evitamos tener que añadir la macro -D_GLIBCXX_USE_CXX11_ABI=0 a la variable de entorno CXXFLAGS, para poder compilar código escrito en C++ de forma indistinta con GCC 5 y superiores, o Clang, compatibilidad que se rompió a partir de la versión 5 de GCC, al introducir una nueva ABI en Libstdc++. El parche no oficial existente, ha sido aceptado por los programadores de Clang, para la versión 3.9.0, pero dado lo experimental del mismo, es muy recomendable seguir utilizando esta opción.
Referencia:
http://manualinux.eu/gcc.html