Gcc

從前綴文件夾執行 gcc

  • May 8, 2018

我在 RHEL 6.7 上有一個使用者帳戶。內置的 gcc 不支持 c++11,所以我正在嘗試安裝我更新的 gcc。我已經執行 configure with --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)

替換~inPATHLIBRARY_PATHwith後/home/user,一切正常。

引用時不擴展波浪號。改為使用實變數$HOME

請參閱為什麼波浪號 (~) 不在雙引號內展開?

個人意見:在命令行中自由使用波浪號(注意不要在引號中展開),但使用$HOME的是腳本。

引用自:https://unix.stackexchange.com/questions/442553