Pregunta:
Tengo ArchLinux y 2 versiones de gcc instaladas. uno predeterminado ("gcc") que es "gcc (GCC) 7.1.1" y "gcc-5" uno que es "gcc-5 (GCC) 5.4.0".
Me cuesta construir algunos proyectos que comprueban que la versión de gcc (y g ++) sea menor o igual a 5. (para ser más específico, instalando el archivo de ejecución oficial de cuda-8.0 de nvidia, o construyendo proyectos que han usado biblioteca cuda y sus archivos de encabezado)
todo lo que quiero es cambiar la versión predeterminada de gcc en mi entorno (temporalmente) y volver a configurarla más tarde cuando termine, algo así como la solución "actualizar alternativas" en distribuciones similares a Debian.
aquí hay información sobre los binarios relacionados con gcc y g ++ en my / usr / bin:
$ ls -l | grep gcc
lrwxrwxrwx 1 root root 3 Jun 30 16:49 cc -> gcc
-rwxr-xr-x 3 root root 997840 Jun 30 16:49 gcc
-rwxr-xr-x 3 root root 873352 Jul 11 2016 gcc-5
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 gcc-ar
-rwxr-xr-x 2 root root 25544 Jul 11 2016 gcc-ar-5
-rwxr-xr-x 2 root root 875720 Jul 11 2016 gccgo-5
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 gcc-nm
-rwxr-xr-x 2 root root 25512 Jul 11 2016 gcc-nm-5
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 gcc-ranlib
-rwxr-xr-x 2 root root 25512 Jul 11 2016 gcc-ranlib-5
-rwxr-xr-x 3 root root 997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc
-rwxr-xr-x 3 root root 873352 Jul 11 2016 x86_64-pc-linux-gnu-gcc-5
-rwxr-xr-x 3 root root 873352 Jul 11 2016 x86_64-pc-linux-gnu-gcc-5.4.0
-rwxr-xr-x 3 root root 997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-7.1.1
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ar
-rwxr-xr-x 2 root root 25544 Jul 11 2016 x86_64-pc-linux-gnu-gcc-ar-5
-rwxr-xr-x 2 root root 875720 Jul 11 2016 x86_64-pc-linux-gnu-gccgo-5
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-nm
-rwxr-xr-x 2 root root 25512 Jul 11 2016 x86_64-pc-linux-gnu-gcc-nm-5
-rwxr-xr-x 2 root root 27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ranlib
-rwxr-xr-x 2 root root 25512 Jul 11 2016 x86_64-pc-linux-gnu-gcc-ranlib-5
Respuesta:
TLDR : sudo ln -s $(which gcc-5) /usr/local/bin/gcc; hash -r
De forma predeterminada, el binario gcc se encuentra en /usr/bin
Comprobando nuestra ruta, vemos que /usr/local/bin
es lo primero:
echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
. . .
Entonces, asumiendo que instalamos gcc-5 ( yaourt --noconfirm -S gcc5
) podemos hacer que sea la versión "predeterminada" creando un enlace simbólico en /usr/local/bin
así:
sudo ln -s $(which gcc-5) /usr/local/bin/gcc
sudo ln -s $(which g++-5) /usr/local/bin/g++
A continuación, necesitamos repetir gcc para eliminar la antigua ubicación de gcc recordada:
hash -r
Para restaurar la versión "predeterminada" original de gcc, solo tenemos que eliminar ese enlace simbólico y repetir:
sudo rm /usr/local/bin/gcc /usr/local/bin/g++
hash -r