redis 7.0 编译失败大概率因gcc版本过低,需≥7.3(支持c++17),centos 7默认4.8.5不满足;应通过scl启用devtoolset-11或ubuntu添加ppa升级gcc-11,并同步检查make版本≥4.2及内存是否充足。

Redis 7.0 编译失败,大概率是 gcc 版本太低
宝塔面板在「软件商店」里点安装 Redis 7.0 失败,日志里出现 error: ‘std::optional’ has not been declared 或 unknown type name ‘constexpr’ 这类报错,基本可以断定:系统自带的 gcc 版本低于 7.3(Redis 7.0 要求 C++17 支持),CentOS 7 默认是 4.8.5,Ubuntu 16.04 是 5.4,都不够。
怎么确认 gcc 版本是否达标
登录服务器执行:
gcc --version
如果输出版本号 ≤ 7.2,就必须升级。注意不是只看主版本,比如 gcc (GCC) 7.2.1 20170829 也不行——必须 ≥ 7.3。
CentOS 7 升级 gcc 到 11.2 的实操步骤
CentOS 7 官方源不提供高版本 gcc,得靠 SCL(Software Collections)或手动编译。推荐用 SCL,省事且稳定:
- 启用 SCL 源:
yum install centos-release-scl -y - 安装 devtoolset-11:
yum install devtoolset-11 -y - 临时启用(仅当前会话):
scl enable devtoolset-11 bash - 验证:
gcc --version应显示 11.2.x - 若需永久生效(不推荐,可能影响宝塔其他组件),可将
source /opt/rh/devtoolset-11/enable加入/etc/profile
Ubuntu 系统升级 gcc 的注意事项
Ubuntu 18.04+ 可直接用 apt,但要注意别破坏系统默认工具链:
- 添加工具链仓库:
sudo apt update && sudo apt install software-properties-common -y - 添加 ubuntu-toolchain-r:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - 安装 gcc-11:
sudo apt install gcc-11 g++-11 -y - 切换默认版本(谨慎):
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100,再用sudo update-alternatives --config gcc选 11 - 切记:不要删掉系统原装
gcc(如 Ubuntu 20.04 自带 9.x),否则宝塔面板后台部分功能可能异常
升级后仍编译失败?重点检查这三点
gcc 升了不代表万事大吉,还有几个隐藏坑:
-
make命令本身可能太老(make -v查版本,要求 ≥ 4.2);Ubuntu 16.04 自带 4.1,需sudo apt install make升级 - 宝塔安装 Redis 时默认走源码编译路径,但某些旧版宝塔会硬编码调用
/usr/bin/gcc,即使你改了alternatives也无效;此时只能手动编译安装 Redis 7.0,绕过宝塔安装流程 - 内存不足也会导致编译中断(尤其
make并行多进程),free -h看可用内存是否 dd if=/dev/zero of=/swapfile bs=1G count=2 && mkswap /swapfile && swapon /swapfile
真正卡在编译环节的,90% 是 gcc 版本 + make 版本 + 内存三者之一没到位。别急着换镜像或重装系统,先盯住这三个点查清楚。











