用着用着NVIDIA驱动突然掉了,nvidia-smi显示:Error: no CUDA-capable device is detected。
按照https://www.cdsy.xyz/computer/system/linux/240817/cd62827.html安装完指定gcc-7.4.0版本后,我发现新版本的NVIDIA驱动需要用到新版本的gcc-7.5.0,于是想对gcc做一个版本管理。
在用apt install下载了新版本gcc-7.5.0之后,首先将多个版本的gcc使用update-alternatives链接到一个gcc-alt中,然后将cc链接到gcc-alt。管理gcc-alt的版本,即是用版本管理安装驱动。
1.将多个版本的gcc使用update-alternatives链接到一个gcc-alt中。在这里我把gcc-alt的目录选择为手动安装目录。
sudo update-alternatives --install /usr/local/bin/gcc-alt gcc /usr/local/bin/gcc 10
sudo update-alternatives --install /usr/local/bin/gcc-alt gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/local/bin/gcc-alt gcc /usr/bin/gcc-7 10
sudo update-alternatives --config gcc
在config的时候,我选择了gcc7.5.0的版本,也就是/usr/bin/gcc-7。
2. 然后将cc链接到gcc-alt
sudo ln -s /usr/local/bin/gcc-alt /usr/bin/cc
3. 这样一来,安装新版本的NVIDIA驱动(2020.4.7更新)就没有问题了。
安装指定gcc版本后,我并没有找到修改gcc --version和which gcc的办法,所以我文章的标题也不敢说“安装指定gcc后 对gcc进行版本管理”。
这个问题的关键是:系统通过什么来识别“gcc”这个命令。比如说,为什么我指定安装gcc版本后,即使我使用了update-alternatives修改版本,which gcc还是/usr/local/bin。如果我知道了怎么识别这个gcc文件,那么我就可以直接对其进行版本管理。