centos 7默认gcc为4.8.5,无法编译redis 6.0.5等新项目,需离线安装devtoolset-9并配套jemalloc:先离线部署jemalloc依赖包(含scl-utils、audit-libs-python等11个rpm),再安装devtoolset-9全套rpm(含mpfr、libmpc、gcc等约20个包),最后解压redis-6.0.5源码并用新gcc编译。

CentOS 7 默认只带 gcc 4.8.5,很多现代项目(比如 MySQL 8.0.16+、Redis 6.0、gRPC)直接报错编译失败——不是缺包,是版本太老。得按需选方式:在线快速用 devtoolset,离线就挂 ISO 或装 RPM 包。
怎么确认当前 GCC 版本和是否已安装
别跳过这步,否则容易重复安装或误判环境:
- 运行
gcc --version,输出类似gcc (GCC) 4.8.5就说明只有系统默认版本 - 运行
which gcc,如果返回/usr/bin/gcc,基本确定没启用任何新版工具集 - 想看完整支持的语言和特性,用
gcc -v;它会打印配置参数,比如是否启用了--enable-languages=c,c++,fortran
在线安装:用 devtoolset-9(推荐,不破坏系统)
这是最稳妥的方式,新旧版本共存,切换灵活,且不用编译耗时:
- 先装 SCL 仓库:
sudo yum install centos-release-scl -y - 再装工具集:
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y(注意不是devtoolset-9全量包,它可能拉太多无关组件) - 临时启用:
scl enable devtoolset-9 bash,新开终端就失效 - 永久启用:往
~/.bashrc末尾加source /opt/rh/devtoolset-9/enable,然后source ~/.bashrc - 验证:
gcc --version应输出gcc (GCC) 9.5.0或类似
⚠️ 注意:scl enable 启动的是新 shell,原 shell 的 $PATH 不变;别在脚本里直接写 scl enable ... command,要用 scl enable devtoolset-9 -- gcc ... 形式
离线安装:挂载 ISO 镜像后装 Development Tools
适用于内网、无外网的服务器,但只能装到系统默认的 4.8.5 版本(够基础 C/C++ 编译,不够新标准):
- 把 ISO 放到本地路径,比如
/usr/local/iso/CentOS-7-x86_64-DVD-1804.iso - 创建挂载点并挂载:
sudo mkdir -p /mnt/iso && sudo mount -o loop /usr/local/iso/CentOS-7-x86_64-DVD-1804.iso /mnt/iso - 建本地 repo 文件:
sudo tee /etc/yum.repos.d/local.repo,内容填:[local-base] name=Local CentOS Base baseurl=file:///mnt/iso enabled=1 gpgcheck=0
- 清理缓存并安装:
sudo yum clean all && sudo yum makecache && sudo yum groupinstall "Development Tools" -y
⚠️ 注意:挂载点路径不能有空格或中文;df -h 看到 /mnt/iso 已挂载才继续;yum groupinstall 本质是批量装 gcc、g++、make、autoconf 等,不是单个 RPM
源码编译安装(仅当需要 GCC 10+ 或定制功能)
GCC 10 及以上版本在 CentOS 7 官方 SCL 中不可用,必须自己编译。过程长、易出错,只建议明确需要高版本时才走这条路:
- 依赖必须全:
sudo yum install -y gcc gcc-c++ make bison flex gmp-devel mpfr-devel libmpc-devel wget - 下载源码后,进解压目录执行
./contrib/download_prerequisites,它会自动拉gmp、mpfr、mpc依赖源码并打补丁 - 构建目录不能和源码同目录,必须新建:
mkdir build && cd build - configure 参数关键项:
../configure --prefix=/opt/gcc-12.4.0 --enable-languages=c,c++ --disable-multilib(--disable-multilib避免 32 位兼容问题) -
make -j$(nproc)编译很慢,别中断;成功后sudo make install - 手动加
/opt/gcc-12.4.0/bin到$PATH,并确保lib64路径被LD_LIBRARY_PATH覆盖
最常卡在 configure 阶段报 cannot compute sizeof (long double),基本是 gmp 依赖没下全或权限不对;别跳过 download_prerequisites 脚本











