Trabajo en un clúster informático que ejecuta CentOS6/RHEL6 y que comparto con aproximadamente 100 usuarios más, supervisado por un único administrador de TI.
Recientemente, comencé a escribir en C++ y parte de mi código depende de C++ 11. De acuerdo aesta página web, C++11 es compatible con gcc
las versiones 4.8.1 y superiores.
Desafortunadamente, el grupo informático tiene la versión 4.4.7.
Hace un rato, por otra razón, intenté instalargcc
la versión 4.8.4 en una ubicación bajo mi directorio de inicio en el clúster. La instalación falló, coneste mensaje de error. Algunas búsquedas en Google me llevaron a creer que debería actualizarglibc
, así que intenté instalar una versión más nueva en mi directorio de inicio. Esofalló dramáticamente.
Mi administrador de TI concluyó: "Probablemente no funcionará modificar la versión degcc
en el clúster". Antes de molestarla con más preguntas (porque a estas alturas nonecesidaduna versión actualizada dealgunocompilador C), estoy buscando estos:
(1) ¿Es gcc
factible instalar la versión 4.8.1+ en mi cuenta de usuario? (Después de que intenté hacer esto la última vez, algunas personas dijeron que era fundamentalmente una idea terrible).
(2) Si la respuesta a (1) es sí, ¿qué precauciones debo tomar esta vez para asegurarme de que la instalación sea exitosa? ¿Es necesaria la instalación glibc
en mi cuenta? ¿Es eso factible?
(3) Si la respuesta a (1) es no, ¿sería viable para mi administrador de TI instalar una versión más nueva en gcc
todo el sistema, sin alterar el código que depende de la versión ya presente?
(4) Si nada de lo anterior es factible para gcc
, ¿cambia la situación con otro compilador de C?
Para resumir, estoy buscando a alguien con conocimiento gcc
(u otro compilador de C) para explicar cómo una persona (sin sudo
autoridad) haría para actualizarlo, si eso es posible.
Respuesta1
Pude compilar GCC 4.8.5 desde la fuente en un directorio de inicio en Centos 6.7. Estoy usando la distribución glibc; No tuve que construir glibc.
Advertencia: estoy haciendo esto en un sistema donde están instaladas las dependencias de compilación para el paquete fuente GCC 4.4.x de la distribución, así como el libmpc-devel
paquete del repositorio epel. Si faltan, es posible que primero tenga que compilarlos desde la fuente en un directorio de inicio y cambiar el proceso de compilación de gcc de alguna manera para usarlos desde allí (si es que eso es posible).
Edificio CCG:
Obtenga la fuente del CCG
curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
Extracto
tar xf gcc-4.8.5.tar.bz2
Cree un directorio de compilación fuera del directorio fuente de GCC y acceda a él.
mkdir build && cd build
Configurar. Hice:
../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \ --enable-checking=release --enable-languages=c,c++,fortran \ --disable-multilib --program-suffix=-4.8
Construir. Tengo 4 núcleos, así que lo hice:
make -j 5
Instalar
make install
Ahora puedo compilar y ejecutar código de prueba.
/home/rakslice/gcc_4_8/bin/g++-4.8 hello.cpp -o hello ./hello Hello, World!
Respuesta2
Respecto a sus preguntas específicas:
(1) Sí, es factible, pero puede que no sea divertido.
(2) No, normalmente puedes utilizar el sistema glibc. De gcc necesitas libstdc++
, libgcc
etc.
Mi enfoque sería seguir elinstrucciones oficiales muy cercanoy sólo recurra a una instrucción no oficial si se adapta muy bien a su plataforma.
En realidad, no me molestaría con 4.8 e iría directamente a una de las series de versiones actuales (5.2 o 4.9).
Nota: Yo mismo no he realizado una instalación de gcc no root, pero trabajo en sistemas que mantienen diferentes versiones de gcc como módulos gnu.