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)