我在 RHEL 6.7 上有一个用户帐户。内置 gcc 不支持 c++11,因此我尝试安装更新的 gcc。我已经使用 --prefix=$HOME/dependencies/gcc
、make
、运行配置make install
,并更新了我的环境变量:
declare -x LIBRARY_PATH="~/dependencies/gcc/lib64:$LIBRARY_PATH"
declare -x PATH="~/dependencies/gcc/bin/:$PATH"
gcc -v
现在显示更新的版本(4.9.4 或 5.5.0,我都尝试过),并which gcc
显示预期的输出:
[user@host ~]$ which gcc
~/dependencies/gcc/bin/gcc
问题如下:
[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 ~]$
我想知道为什么我必须提供 g++ 的完整路径才能使其工作。我无法使用 调试它strace
,因为strace g++
从 运行版本/usr/bin
。有任何想法吗?
更新按照 Knud Larsen 的建议添加符号链接后,我运行strace strace g++55
并注意到这一行:
stat("~/dependencies/gcc/bin/g++55", 0x7ffcf17f9530) = -1 ENOENT (No such file or directory)
替换~
inPATH
和LIBRARY_PATH
with后/home/user
,一切正常。