方法一
升级命令
sudo apt install gcc-12 g++-12 make
设置默认
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12
备注
在 update-alternatives
命令中,100
表示优先级(Priority),它的作用是定义当前安装的备选版本在系统中的优先级顺序。当系统中存在多个备选版本时,系统会自动选择优先级最高的版本作为默认版本。
优先级是否可以替换为其他数字?
可以! 优先级的数值是任意整数,但需遵循以下原则:
-
相对大小有意义:
-
只需保证不同版本的优先级数值大小关系正确即可。例如:
# 版本1的优先级更高(200 > 100) sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 200 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
-
此时系统会自动选择
gcc-12
。
-
-
常用范围:
-
通常使用
10
、20
、100
等整数,便于维护。例如:# 设置优先级为 100 和 90 sudo update-alternatives --install ... 100 sudo update-alternatives --install ... 90
-
-
避免冲突:
-
不同版本的优先级数值不应相同,否则自动选择时可能无法区分。
-
示例场景
假设系统中已安装 gcc-11
(优先级 100
)和 gcc-12
(优先级 200
):
# 自动选择优先级更高的 gcc-12
gcc --version # 输出 gcc-12# 如果想将 gcc-11 设为默认,可以手动调整优先级:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 300
# 此时系统会因优先级 300 > 200,自动切换为 gcc-11
总结
-
100
是优先级数值,数值越大,自动选择的权重越高。 -
可替换为任意整数,只需保证不同版本的优先级数值能正确反映你的需求。
-
修改优先级后,可以通过以下命令验证:
update-alternatives --query gcc # 查看所有备选版本及其优先级
方法二
第一种方法安装失败的话,可以试试第二种方法。
首先下载gcc-12的压缩包
官网下载
Index of /gnu/gcc
或者从清华大学的镜像源找到指定版本的包
https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/
https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-12.3.0/gcc-12.3.0.tar.gz
通过如下的命令对下载的压缩包进行解压
tar -xf gcc-12.3.0.tar.gz
安装所需的依赖项
运行下面的命令安装一些工具包
sudo apt install build-essential
安装以下软件包
为了帮助 GCC 源编译,请安装 libgmp3-dev、libmpfr-dev 和 libmpc-dev 包:
sudo apt install libmpfr-dev libgmp3-dev libmpc-dev -y
打开GCC目录
进入到压缩文件解压后的文件中
cd gcc-12.3.0
设置 GCC 构建选项
./configure -v --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/usr/local/gcc-12.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib --program-suffix=-12.3.0
使用“make”命令启动 GCC 构建过程
使用 make 命令启动 GCC 构建过程:
make -j3
完成构建过程可能需要很长时间和大量资源。j3 指令指示机器使用三个核心执行任务。可以根据系统的设置和功能调整核心数量。
完成上述步骤后安装 GCC
sudo make install
设置优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 --slave /usr/bin/g++ g++ /usr/bin/g++-12
这样就完成了!