记一次编译Redis6.0版本时报错expected specified-qualifier-list before '_Atomic'
由于工作的原因,需要编译Redis-6.0.0,在RedHat7上编译Redis-6.0.0的过程中遇到了错误:
expected specified-qualifier-list before '_Atomic'
经过查询这是因为RedHat7自带的gcc版本太低了的缘故:
gcc -v
gcc version 4.8.5 20150623(Red Hat 4.8.5-28)(GCC)
而自Redis6.0.0之后,编译Redis需要支持C11特性,C11特性在4.9中引入,因此想编译Redis6.0.0就有两种方法:
1.升级gcc;
2.安装Developer Toolset 9使用gcc 9编译;
由于工作使用内网,禁止联网,升级gcc会很麻烦,而使用devooset-9的好处就在于它不会更新系统原有的gcc软件包,当使用gc9工具链时,使用下列命令进入环境:
scl enable devtoolset-9 bash
因此决定使用第二种方式,安装Developer Toolset 9,使用高版本的gcc编译Redis-6.0.0
下面演示如何安装devtoolset-9devtoolset-9
1.下载所需要的rpm包
下载地址我放在了百度云网盘,
链接:https://pan.baidu.com/s/1v2W-rw5R0vTPWOiSyoVcdA
提取码:krwj
主要因为博客园上传附件限制在10m内,太小了点。
2.将devtoolset-9.tar.gz解压,执行./install.sh,安装成功;
这个压缩包里涉及的rpm包是根据我目前使用的机器上的gcc版本决定的,有可能不适合你,安装的过程中如果缺少什么包,请到下面这个地址去搜索下载:
https://pkgs.org/
然后根据你的操作系统再选择合适的包下载即可。
3.通过scl enable devtoolset-9 bash激活gcc-9环境;
查看gcc版本:
# gcc -v
解压redis-6.0.0.tar.gz,进入redis-6.0.0,执行make命令,编译成功。
浙公网安备 33010602011771号