CentOS 7 编译 Redis 6.x 完整教程(解决 GCC 版本不支持 C11)


🚀 CentOS 7 编译 Redis 6.x 完整教程(解决 GCC 版本不支持 C11)

Redis 6.x 引入了 stdatomic.h 等 C11 特性,而 CentOS 7 默认 GCC 版本为 4.8.5不支持 C11 标准,所以直接编译会失败。


✅ 可选方案概览

方案 是否支持 Redis 6.x 是否推荐 说明
升级 GCC(使用 Devtoolset) ✅ 支持 ⭐推荐 不影响系统默认 GCC,兼容性更好
使用 Redis 5.0.x ✅ 支持 ⭐推荐 避免修改 GCC,适合仅需基础功能的场景
继续用 GCC 4.8 编译 Redis 6.x ❌ 不支持 ❌不行 缺失 stdatomic.h,无法成功编译

✅ 推荐方案一:升级 GCC(使用 Devtoolset 工具链)

🛠️ 步骤一:安装 Devtoolset 和 GCC 9

bash 复制代码
# 安装软件源(scl 源)
sudo yum install -y centos-release-scl

# 安装 GCC 9 和 G++ 9
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++

🛠️ 步骤二:启用新版 GCC(当前会话)

bash 复制代码
# 切换到新版 GCC 环境(只对当前 shell 有效)
scl enable devtoolset-9 bash

# 确认是否为新版
gcc --version

预期输出:

复制代码
gcc (GCC) 9.x.x

📌 提示:每次新开一个 shell 终端,都要重新运行 scl enable devtoolset-9 bash


🧱 步骤三:编译 Redis 6.x

示例:编译 Redis 6.2.10

bash 复制代码
# 下载 Redis 源码(如已有可跳过)
cd /usr/local/src
wget http://download.redis.io/releases/redis-6.2.10.tar.gz
tar -xvzf redis-6.2.10.tar.gz
cd redis-6.2.10

# 清理旧编译缓存
make distclean

# 编译(使用全部核心)
make -j$(nproc)

编译成功后可以启动服务:

bash 复制代码
src/redis-server redis.conf

🧪 测试 Redis 是否可用

bash 复制代码
src/redis-cli ping

输出:

复制代码
PONG

✅ 推荐方案二:使用 Redis 5.0.x(兼容 GCC 4.8.5)

如果你不想升级 GCC,可以选择兼容老编译器的 Redis 5.0:

bash 复制代码
cd /usr/local/src
wget http://download.redis.io/releases/redis-5.0.14.tar.gz
tar -xvzf redis-5.0.14.tar.gz
cd redis-5.0.14

make -j$(nproc)

# 启动 Redis 服务
src/redis-server redis.conf

🎯 自动化脚本(可选)

自动切换到 GCC 9 并编译 Redis 的脚本示例:

bash 复制代码
cat <<EOF > install_redis6_with_gcc9.sh
#!/bin/bash
set -e

echo "🔧 安装 Devtoolset-9..."
yum install -y centos-release-scl
yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++

echo "🚀 启用 GCC 9 环境..."
source /opt/rh/devtoolset-9/enable

echo "📦 下载并编译 Redis 6.2.10..."
cd /usr/local/src
wget http://download.redis.io/releases/redis-6.2.10.tar.gz
tar -xvzf redis-6.2.10.tar.gz
cd redis-6.2.10
make -j\$(nproc)

echo "✅ 编译完成,启动 Redis..."
src/redis-server redis.conf
EOF

chmod +x install_redis6_with_gcc9.sh

然后运行脚本:

bash 复制代码
bash install_redis6_with_gcc9.sh

📌 总结建议

方案 适用场景 是否推荐
✅ 升级 GCC(使用 Devtoolset) 使用 Redis 6.x 及以上版本 ⭐推荐
✅ 使用 Redis 5.0.x 环境稳定、仅使用基本功能即可 ⭐推荐
❌ 尝试用 GCC 4.8 编译 Redis 6.x 编译会失败,不支持 C11 ❌不行

相关推荐
陌上丨19 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
wdfk_prog20 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥20 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿21 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘21 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy6481 天前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 天前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠1 天前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio1 天前
rk芯片驱动编写
linux·学习
mango_mangojuice1 天前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习