プレフィックスフォルダで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スクリプトを使用してください。

おすすめ記事