unix arch-linux – Cómo cambiar temporalmente la versión predeterminada de gcc en ArchLinux

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

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım