Ubuntu上管理多版本gcc
上回介绍了多版本CUDA的管理方案。实际上在实现安装不同版本的CUDA之后部署模型时,意外发现了还有不同版本GCC共存的需求。同样,我不想删掉较高版本的GCC,进而寻求解决方案。
准备工作
首先查看当前gcc的版本。
1 | gcc -v |
然后查看gcc的安装路径是否已经有其他版本。
1 | ls /usr/bin/gcc** |
未安装多版本之前,我的主机仅有的一个gcc版本号为9,而实际部署需要gcc-8。如果已经满足自己的版本要求,就无需吹毛求疵了。如果不能满足,如版本过低或者过高,就要进行下面的步骤。
安装不同的gcc
老规矩在安装或者更新前,先运行
1 | sudo apt-get update |
接着安装gcc-8和g++-8,输入
1 | sudo apt-get install gcc-8 g++-8 |
等待片刻即可安装成功。
设置优先级
不同于CUDA的自由切换,安装了多个版本的gcc之后,要手动设置优先级,来确定每次使用gcc编译时的版本。而优先级最高的,就是默认使用的gcc。由于当前需要的是gcc-8,不妨把这个的优先级设置高一点。
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20 --slave /usr/bin/g++ g++ /usr/bin/g++-8 |
自由选择
不同于CUDA,切换不同版本的gcc,不需要增删软链接,而是直接输入下面的命令,并且输入数字,选择想要的版本即可。
1 | sudo update-alternatives --config gcc |
这里会提示输入数字,最后按下Enter
。
1 | There are 2 choices for the alternative gcc (providing /usr/bin/gcc). |
然后可以使用gcc -v
检查是否切换到了想要的版本。
总结
无论在安装还是切换上面,gcc都比CUDA要友好很多。一是因为linux源本身就包含了gcc/g++,可以很方便地获取;二是因为gcc没有像CUDA设置软链接那样的操作,取而代之的是优先级和可视化的切换提示。无论是哪种方法,能较好地解决自己的需求即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RandIdea!