접두사 폴더에서 gcc 실행

접두사 폴더에서 gcc 실행

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)

~PATHLIBRARY_PATH으로 교체한 후 /home/user모든 것이 잘 작동합니다.

답변1

물결표 문자는 인용할 때 확장되지 않습니다. 대신 실제 변수를 사용하십시오 $HOME.

바라보다큰따옴표 안에서 물결표(~)가 확장되지 않는 이유는 무엇입니까?

개인적인 의견: 명령줄에서는 물결표를 자유롭게 사용할 수 있지만(인용되지 않는다는 점에 유의하세요) $HOME스크립트를 사용하면 됩니다.

관련 정보