Centos7 Redis 6 make编译错误解决办法

阅读数:93 评论数:0

跳转到新版页面

分类

Linux

正文

当你下载redis 最新版本6.0.8 的时候会发现make的时候会报错,简单来说就是最新版的redis用到了c11 ,你的系统gcc版本低了,系统自带gcc版本是4.8.5,只需要更新下gcc到5.4以上即可,同时编译redis时带上gcc版本的使用参数,不影响系统自带gcc!我这里安装最新版gcc10.2.0

1、手动安装

http://mirror.hust.edu.cn/gnu/gcc/

新gcc编译安装也是需要依靠旧版本的gcc 想编译 C++11 标准下的 C++ 程序,则至少要安装 4.8 版本的 GCC 编译器,低版本的 GCC 编译器是不支持 C++11 标准的。

yum install -y glibc-static libstdc++-static
yum install -y gcc gcc-c++

(1)解压

tar -xf gcc-10.2.0.tar.gz -C /opt/src/
cd gcc-10.2.0

(2)下载安装 GCC 所需要的依赖包(如 gmp、mpfr、mpc 等):

[root@alert gcc-10.2.0]# ./contrib/download_prerequisites
2020-09-11 16:37:01 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "./gmp-6.1.0.tar.bz2" [1]
2020-09-11 16:37:16 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284/1279284] -> "./mpfr-3.1.4.tar.bz2" [1]
2020-09-11 16:37:28 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "./mpc-1.0.3.tar.gz" [1]
2020-09-11 16:37:46 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "./isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: 确定
mpfr-3.1.4.tar.bz2: 确定
mpc-1.0.3.tar.gz: 确定
isl-0.18.tar.bz2: 确定
All prerequisites downloaded successfully.

(3)手动创建一个目录,用于存放编译 GCC 源码包生成的文件

mkdir gcc-build-10.2.0
cd gcc-build-10.2.0
pwd
/opt/src/gcc-10.2.0/gcc-build-10.2.0
#使用gcc目录下的命令编译安装
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=/opt/app/gcc-10.2.0

–enable-languages 用于设定 GCC 编译器支持编译的编程语言的类别,例如 c、c++、java、objc、obj-c++、go 等,这里只安装c,c++

(4)创建好 makefile 文件之后,接下来就可以使用 make 命令来编译 GCC 源程序

#耗时4小时,请规划好时间
make
make install

(5)使用新的gcc编译redis

CC=/opt/app/gcc-10.2.0/bin/gcc make
make install PREFIX=/opt/app/redis6.0.8

2、yum更新gcc

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
gcc -v
最后在 make && make install

(1)SCL:Software Collection,Centos-release-scl是Centos的一个软件库。

(2)devtoolset是开发工具集,

(3)scl enable devtoolset-9 bash切换gcc

 




相关推荐