ArchLinuxでgccのデフォルトバージョンを一時的に変更する方法

ArchLinuxでgccのデフォルトバージョンを一時的に変更する方法

ArchLinuxがインストールされ、gccバージョンが2つあります。デフォルト値(「gcc」)は「gcc(GCC)7.1.1」、「gcc-5」は「gcc-5(GCC)5.4.0」です。

gcc(およびg ++)バージョンが5以下であることを確認するために、いくつかのプロジェクトをビルドする際に問題があります。 (より具体的には、nvidiaでcuda-8.0の公式実行可能ファイルをインストールするか、使用されたプロジェクトcudaライブラリとそのヘッダファイルをビルドします。)

私が望むのは、Debianに似たディストリビューションの "update-alternatives"ソリューションと同様に、私の環境でgccのデフォルトバージョンを(一時的に)変更し、完了したらリセットすることです。

私の/usr/binにあるgccとg ++関連のバイナリに関する情報は次のとおりです。

$ ls -l | grep gcc
lrwxrwxrwx 1 root root        3 Jun 30 16:49 cc -> gcc
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 gcc
-rwxr-xr-x 3 root root   873352 Jul 11  2016 gcc-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-ar
-rwxr-xr-x 2 root root    25544 Jul 11  2016 gcc-ar-5
-rwxr-xr-x 2 root root   875720 Jul 11  2016 gccgo-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-nm
-rwxr-xr-x 2 root root    25512 Jul 11  2016 gcc-nm-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 gcc-ranlib
-rwxr-xr-x 2 root root    25512 Jul 11  2016 gcc-ranlib-5
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc
-rwxr-xr-x 3 root root   873352 Jul 11  2016 x86_64-pc-linux-gnu-gcc-5
-rwxr-xr-x 3 root root   873352 Jul 11  2016 x86_64-pc-linux-gnu-gcc-5.4.0
-rwxr-xr-x 3 root root   997840 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-7.1.1
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ar
-rwxr-xr-x 2 root root    25544 Jul 11  2016 x86_64-pc-linux-gnu-gcc-ar-5
-rwxr-xr-x 2 root root   875720 Jul 11  2016 x86_64-pc-linux-gnu-gccgo-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-nm
-rwxr-xr-x 2 root root    25512 Jul 11  2016 x86_64-pc-linux-gnu-gcc-nm-5
-rwxr-xr-x 2 root root    27104 Jun 30 16:49 x86_64-pc-linux-gnu-gcc-ranlib
-rwxr-xr-x 2 root root    25512 Jul 11  2016 x86_64-pc-linux-gnu-gcc-ranlib-5

ベストアンサー1

全長DR:sudo ln -s $(which gcc-5) /usr/local/bin/gcc; hash -r

デフォルトでは、gccバイナリは次の場所にあります。/usr/bin

ルートを確認すると、これが/usr/local/bin最初に出てくることがわかります。

echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
. . .

したがって、gcc-5()がインストールされていると仮定すると、次のyaourt --noconfirm -S gcc5シンボリックリンクを作成して「デフォルト」バージョンにすることができます。/usr/local/bin

sudo ln -s $(which gcc-5) /usr/local/bin/gcc
sudo ln -s $(which g++-5) /usr/local/bin/g++

次に、以前に記憶されたgccの場所を削除するためにgccを再ハッシュする必要があります。

hash -r

gccの元の「デフォルト」バージョンを復元するには、単にシンボリックリンクを削除して再ハッシュするだけです。

sudo rm /usr/local/bin/gcc /usr/local/bin/g++
hash -r

おすすめ記事