Como alterar temporariamente a versão padrão do gcc no ArchLinux

4

Eu tenho o ArchLinux e 2 versões do gcc instaladas nele. default um ("gcc") que é "gcc (GCC) 7.1.1" e "gcc-5" um que é "gcc-5 (GCC) 5.4.0".

Eu tenho dificuldade em criar alguns projetos que verificam a versão do gcc (e g ++) como sendo menor ou igual a 5. (para ser mais específico, instalar o arquivo de execução oficial do cuda-8.0 da nvidia, ou construir projetos que usaram biblioteca cuda e seus arquivos de cabeçalho)

tudo que eu quero é mudar a versão padrão do gcc no meu ambiente (temporariamente) e configurá-la de volta mais tarde quando eu terminar, algo como uma solução "update-alternatives" em distros como o debian.

aqui estão algumas informações sobre binários relacionados ao gcc e g ++ em meu / 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
    
por saleh jamali 08.08.2017 / 19:36

1 resposta

1

TLDR : sudo ln -s $(which gcc-5) /usr/local/bin/gcc; hash -r

Por padrão, o binário do gcc está localizado em /usr/bin

Verificando nosso caminho, vemos que /usr/local/bin vem primeiro:

echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
. . .

Então, assumindo que instalamos o gcc-5 ( yaourt --noconfirm -S gcc5 ), podemos fazer com que a versão "default" crie um symlink em /usr/local/bin da seguinte forma:

sudo ln -s $(which gcc-5) /usr/local/bin/gcc
sudo ln -s $(which g++-5) /usr/local/bin/g++

Em seguida, precisamos refazer o gcc para remover o antigo local do gcc:

hash -r

Para restaurar a versão original "padrão" do gcc, basta excluir esse link simbólico e refazer o resumo:

sudo rm /usr/local/bin/gcc /usr/local/bin/g++
hash -r
    
por 05.12.2018 / 04:39