温馨提示×

debian如何多版本共存gcc

小樊
41
2026-10-16 12:58:41
栏目: 智能运维

在 Debian 上实现 多个 GCC 版本共存 是非常常见且官方支持的做法,不需要卸载旧版本。下面按“最推荐 → 进阶”的方式说明。


一、安装多个 GCC 版本(共存)

1. 查看可安装的 GCC 版本

apt-cache search gcc | grep ^gcc-

常见如:

  • gcc-9
  • gcc-10
  • gcc-11
  • gcc-12
  • gcc-13

2. 安装多个版本

sudo apt update
sudo apt install gcc-11 g++-11
sudo apt install gcc-12 g++-12

安装后它们会 共存 在:

/usr/bin/gcc-11
/usr/bin/gcc-12

此时直接运行:

gcc-11 --version
gcc-12 --version

二、使用 update-alternatives 管理默认 gcc(推荐)

1. 注册到 alternatives

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 120

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 120

2. 切换默认版本

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

按提示选择编号即可。

3. 查看当前版本

gcc --version

✅ 优点:

  • 系统级切换
  • 大多数软件(cmake / make)自动识别

三、临时使用某个 GCC(不改系统默认)

方式 1:直接用版本号

gcc-11 main.c

方式 2:环境变量(编译时)

export CC=gcc-11
export CXX=g++-11
make

方式 3:CMake 指定

cmake -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 ..

四、多版本共存时常见注意事项

1. libstdc++ 版本

不同 GCC 对应不同 libstdc++:

ls /usr/lib/gcc/x86_64-linux-gnu/

一般 向下兼容,但:

  • 新 GCC 编译的程序
  • 不能在只装旧 libstdc++ 的系统运行

2. 内核 / 驱动编译

编译内核或 DKMS 模块时,建议:

sudo update-alternatives --config gcc

切回 系统推荐版本


五、彻底恢复系统默认 GCC

sudo update-alternatives --auto gcc
sudo update-alternatives --auto g++

六、总结(最常用方案)

✅ 推荐做法

  • 安装:gcc-11 gcc-12
  • 管理:update-alternatives
  • 编译:cmake -DCMAKE_C_COMPILER=...

如果你有具体需求(比如:

  • 编译旧内核
  • ROS / CUDA 匹配
  • 交叉编译 )

可以告诉我,我可以给你更精确的版本建议。

0 踩