当前位置: 首页 > news >正文

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

# 安装软件源(scl 源)
sudo yum install -y centos-release-scl# 安装 GCC 9 和 G++ 9
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++

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

# 切换到新版 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

# 下载 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)

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

src/redis-server redis.conf

🧪 测试 Redis 是否可用

src/redis-cli ping

输出:

PONG

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

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

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.14make -j$(nproc)# 启动 Redis 服务
src/redis-server redis.conf

🎯 自动化脚本(可选)

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

cat <<EOF > install_redis6_with_gcc9.sh
#!/bin/bash
set -eecho "🔧 安装 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/enableecho "📦 下载并编译 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
EOFchmod +x install_redis6_with_gcc9.sh

然后运行脚本:

bash install_redis6_with_gcc9.sh

📌 总结建议

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

http://www.dtcms.com/a/308761.html

相关文章:

  • lesson29:Python元类与抽象类深度解析:从接口定义到元编程实践
  • mysql 日志机制
  • Java 接口(上)
  • 哈希相关的模拟实现
  • 04百融云策略引擎项目laravel实战步完整安装composer及tcpdf依赖库和验证-优雅草卓伊凡
  • 常用的ROS(Robot Operating System,机器人操作系统)包,用于机器人软件开发的工具和库
  • isasssim robotiq夹爪踩坑
  • 同个主机拉取不同权限仓库的方法
  • 疯狂星期四文案网第25天运营日记
  • Product Hunt 每日热榜 | 2025-07-31
  • 零信任网络概念及在网络安全中的应用
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 80(题目+回答)
  • 高等教育领域:依托VR教育服务,推动科研与教学的创新性发展
  • 智慧安防徘徊识别误报率↓77%:陌讯时序 - 空间融合算法实战解析
  • thinkphp3.2 中使用redis
  • LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机(7_121_C++_简单)(贪心)
  • 常见的中间件漏洞练习教程
  • Druid数据库连接池
  • 网安学习NO.20
  • vue 开发总结:从安装到第一个交互页面-与数据库API
  • 5G-A技术浪潮勾勒通信产业新局,微美全息加快以“5.5G+ AI”新势能深化场景应用
  • Mysql实时同步Doris
  • 【MySQL篇】:MySQL表的增删查改操作的基础语法与实用示例
  • Oracle DDL详解:从基础到实战的完整指南
  • 大量图片一次性上传,前端优化方式
  • 嵌入式仿真教学的革新力量:深圳航天科技创新研究院引领高效学习新时代
  • vue+elementUI上传图片至七牛云组件封装及循环使用
  • 机器学习基础-seaborn
  • C# XML 文件
  • spring mvc 整体处理流程原理