Executando o gcc da pasta de prefixo

1

Eu tenho uma conta de usuário no RHEL 6.7. O gcc embutido não suporta c ++ 11, então estou tentando instalar um gcc mais recente. Eu executei o configure com --prefix=$HOME/dependencies/gcc , make , make install e atualizei minhas variáveis de ambiente:

declare -x LIBRARY_PATH="~/dependencies/gcc/lib64:$LIBRARY_PATH"
declare -x PATH="~/dependencies/gcc/bin/:$PATH"

gcc -v agora mostra a versão atualizada (4.9.4 ou 5.5.0, eu tentei os dois) e which gcc mostra a saída esperada:

[user@host ~]$ which gcc
~/dependencies/gcc/bin/gcc

O problema é o seguinte:

[user@host ~]$ g++ -std=c++11 -o test test.cpp
g++: error trying to exec 'cc1plus': execvp: No such file or directory
[user@host ~]$ ~/dependencies/gcc/bin/g++ -std=c++11 -o test test.cpp
[user@host ~]$

Eu me pergunto por que eu tenho que dar o caminho completo para g + + para fazer este trabalho. Não foi possível depurar isso com strace , pois strace g++ executa a versão de /usr/bin . Alguma idéia?

Atualizar após adicionar um link simbólico conforme sugerido por Knud Larsen, eu corri strace strace g++55 e notei esta linha:

stat("~/dependencies/gcc/bin/g++55", 0x7ffcf17f9530) = -1 ENOENT (No such file or directory)

Depois de substituir ~ em PATH e LIBRARY_PATH por /home/user , tudo funciona bem.

    
por LinAlg 08.05.2018 / 16:11

1 resposta

2

O til não é expandido quando citado. Use uma variável real como $HOME .

Veja Por que o til não expande? entre aspas duplas?

Opinião pessoal: Use o til livremente na linha de comando (com a ressalva de que ele não se expande entre aspas), mas use $HOME é scripts.

    
por 08.05.2018 / 19:34

Tags