零、背景(更换gcc版本的原因)
本人在跑mamba模型时需要运行这条指令: pip install causal_conv1d==1.0.0,但是运行后报出关于gcc版本的警告,于是经过搜索得知cuda版本与gcc版本有一定的对应关系,具体的对应关系如这条博客所写:NVIDIA 驱动和 CUDA 版本信息速查。本人使用的是cuda11.8,所以我需要把gcc版本切换到gcc11。gcc版本切换完成后,关于gcc的警告不再出现。
一、安装多个gcc、g++使用的是apt包管理器
1.1更新包列表
sudo apt update
1.2安装gcc的特定版本,例如gcc11
sudo apt install gcc-9 g++-9
1.3查看gcc版本
gcc -v
或者
gcc --version
查看当前安装的gcc的各个版本:
ls /usr/bin/gcc* -l
ls /usr/bin/gcc*
ls /usr/bin/g++*
1.4设置gcc与g++的优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 80
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 60
1.5通过update-alternatives工具实现不同版本gcc之间的快捷切换
update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。
查看有哪些可选的gcc(需要经过1.4的优先级配置才生效,不然会报错,如下所示)
lwl@lwl-Legion-Y7000P-IRH8:~$ sudo update-alternatives --config gcc
[sudo] lwl 的密码:
update-alternatives: 错误: 无 gcc 的候选项
查看有哪些可选的gcc、g++:
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
1.6其他博客上看到的使用update-alternatives的切换方式
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9
# 设置多个版本的gcc可供选择。70,60数字代表的是不同版本的优先级,默认最大数字版本的优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-9