我安装了 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