gcc的安装与版本管理
2025-07-23
26
0
在 Ubuntu 上安装 GCC 12(或特定版本的 GCC),可以通过以下方法实现:
方法 1:使用 Ubuntu 官方源(推荐)
适用于 Ubuntu 22.04 (Jammy) 及更高版本,默认仓库已包含 GCC 12。
更新软件包列表
sudo apt update
安装 GCC 12
sudo apt install gcc-12 g++-12
设为默认编译器(可选)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
切换默认版本:
sudo update-alternatives --config gcc sudo update-alternatives --config g++
验证安装
gcc --version g++ --version
方法 2:通过 Ubuntu Toolchain PPA(适用于旧版本)
如果官方源没有 GCC 12(如 Ubuntu 20.04),可以使用第三方 PPA:
添加 Toolchain PPA
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update
安装 GCC 12
sudo apt install gcc-12 g++-12
设为默认编译器(同上)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
方法 3:手动编译安装(不推荐)
仅适用于特殊情况(如需要特定补丁版本):
- 下载源码:
wget https://ftp.gnu.org/gnu/gcc/gcc-12.1.0/gcc-12.1.0.tar.gz tar -xf gcc-12.1.0.tar.gz cd gcc-12.1.0
- 安装依赖:
sudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev flex bison
- 编译安装:
./configure --prefix=/usr/local/gcc-12 --disable-multilib make -j$(nproc) sudo make install
- 添加环境变量:
echo 'export PATH=/usr/local/gcc-12/bin:$PATH' >> ~/.bashrc source ~/.bashrc
验证 GCC 12
gcc-12 --version
输出应类似:
gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
注意事项
- 如果系统已有其他 GCC 版本,使用
update-alternatives
管理多版本。 - 卸载旧版本(谨慎操作):
sudo apt remove gcc-11 g++-11 # 举例卸载 GCC 11
这个命令用于在 Ubuntu/Debian 系统中配置 多版本 GCC 的默认选择,具体解释如下:
命令拆解
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo
:以管理员权限运行(因为需修改系统路径)。update-alternatives
:Ubuntu/Debian 中管理多版本软件的工具。--install
:表示要注册一个新的备选程序。
参数含义
/usr/bin/gcc
系统默认调用的 GCC 路径(软链接,实际会指向具体版本)。gcc
备选组的名称,这里是gcc
(也可以是g++
、python
等其他工具)。/usr/bin/gcc-12
要加入备选的程序路径(这里是 GCC 12 的实际可执行文件)。100
优先级数字,值越大优先级越高(当存在多个版本时,系统会自动选择优先级最高的版本)。
实际作用
- 将 GCC 12 添加到系统的备选列表中。
- 如果之前没有设置过默认 GCC,系统会自动选择优先级最高的版本(此处是 100)。
- 如果已存在其他版本(如 GCC 11),可以通过以下命令手动切换:
会显示类似以下菜单,输入对应编号即可切换:sudo update-alternatives --config gcc
Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/gcc-11 110 auto mode 1 /usr/bin/gcc-11 110 manual mode 2 /usr/bin/gcc-12 100 manual mode
相关操作
查看当前所有备选版本:
update-alternatives --list gcc
删除某个备选版本(如移除 GCC 12):
sudo update-alternatives --remove gcc /usr/bin/gcc-12
设置 G++ 的默认版本(同理):
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
为什么需要这样做?
- 系统中可能同时存在多个 GCC 版本(如 11、12、13),但默认的
gcc
命令只能指向一个。 - 通过
update-alternatives
可以灵活切换,避免手动修改软链接的风险。
注意事项
- 如果只安装了一个 GCC 版本,
update-alternatives
会直接将其设为默认。 - 优先级相同的版本,系统会优先选择已标记为
auto mode
的版本。
如果有其他疑问,可以继续追问!