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.