gcc-toolset or devtoolset软件集合

gcc-toolset(在旧版本系统中称为 devtoolset)是红帽系 Linux(RHEL、CentOS、Rocky Linux、AlmaLinux)提供的一套软件集合,其核心作用是在不破坏系统默认编译器的前提下,为开发者提供更高版本的 GCC 编译器及相关开发工具


1. 版本升级与共存

企业级 Linux 系统(如 Rocky 9 或 CentOS 8)为了稳定性,系统自带的默认 GCC 版本通常较低且在整个生命周期内固定

  • 解决版本冲突: 允许你在同一台机器上安装多个版本的 GCC。例如,Rocky 9 默认自带 GCC 11,但你可以通过 gcc-toolset-13 使用 GCC 13。

  • 支持新标准: 如果你的代码需要使用 C++20、C++23 或更新的编译器优化特性,系统默认编译器可能无法支持,此时必须使用 gcc-toolset

2. 包含的组件

它不仅仅是一个编译器,而是一整套开发工具链,通常包括:

  • **GCC (gcc, g++, gfortran)**:核心编译器。
  • Binutils:包括连接器 (ld)、汇编器 (as) 等二进制工具。
  • GDB:更新版本的调试器。
  • 性能分析工具:如 valgrind, systemtap, elfutils 等。

3. 工作原理环境隔离

gcc-toolset 采用了 SCL (Software Collections) 的技术。它将所有工具安装在特定的目录下(如 /opt/rh/),而不是覆盖系统的 /usr/bin/gcc

  • 按需启用: 你必须显式地运行一个命令来“进入”这个高版本环境。
  • 安全: 退出该环境后,系统依然使用默认的旧版 GCC,保证了系统组件(如内核模块编译)的安全性。

4. 用法示例

任务 命令示例
安装 (以版本 13 为例) sudo dnf install gcc-toolset-13
启用 (进入新 shell) scl enable gcc-toolset-13 bash
验证 gcc --version (此时会显示 13.x)
单次执行 scl enable gcc-toolset-13 'make myproject'

5. gcc-toolset vs devtoolset

两者本质相同,只是名称随系统版本发生了变化:

  • devtoolset: 用于 CentOS 6 / 7 (RHEL 6 / 7)。
  • gcc-toolset: 用于 Rocky Linux 8 / 9 (RHEL 8 / 9)