从前缀文件夹运行 gcc

从前缀文件夹运行 gcc

我在 RHEL 6.7 上有一个用户帐户。内置 gcc 不支持 c++11,因此我尝试安装更新的 gcc。我已经使用 --prefix=$HOME/dependencies/gccmake、运行配置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)

替换~inPATHLIBRARY_PATHwith后/home/user,一切正常。

答案1

引用时波形符不会扩展。使用实数变量来$HOME代替。

为什么波形符 (~) 不在双引号内展开?

个人意见:在命令行上自由使用波形符(但需要注意的是它不会用引号展开),但使用的$HOME是脚本。

相关内容