web-dev-qa-db-ja.com

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

ArchLinuxと2つのバージョンのgccがインストールされています。 「gcc(GCC)7.1.1」であるデフォルトの1つ(「gcc」)および「gcc-5(GCC)5.4.0」である「gcc-5」の1つ。

Gcc(およびg ++)のバージョンが5以下であることを確認するいくつかのプロジェクトを構築するのに苦労しています(より具体的には、nvidiaからcuda-8.0の公式実行ファイルをインストールするか、使用したプロジェクトを構築しています) cudaライブラリとそのヘッダーファイル)

私が望むのは、私の環境のgccのデフォルトバージョンを(一時的に)変更し、後でそれを元に戻すことです。これは、debianのようなディストリビューションの「update-alternatives」ソリューションのようなものです。

ここに私の/ 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
4
saleh jamali

[〜#〜] tldr [〜#〜]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
2
l3x