如何临时更改 ArchLinux 中 gcc 的默认版本

如何临时更改 ArchLinux 中 gcc 的默认版本

我安装了 ArchLinux 和 2 个版本的 gcc。默认值(“gcc”)是“gcc (GCC) 7.1.1”,“gcc-5”是“gcc-5 (GCC) 5.4.0”。

我很难构建一些项目来检查 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

答案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

相关内容