安装redis报jemalloc错误

Redis-4.0.10手动编译安装——采坑记(重点解决缺失jemalloc.h)

一、前期准备

mkdir /app
yum install -y gcc wget
wget http://download.redis.io/releases/redis4.0.10.tar.gz
tar zxvf redis-4.0.10.tar.gz -C /app/
cd redis-4.0.10


二、编译过程,采坑记

make
1
第1个报错:zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

网上大部分的答案可能就是这样:

使用make MALLOC=libc 
这种不明所以的答案我是不认可的,既然官网默认使用jemalloc,自然有它的道理和好处,ReadMe里也写了,它比libc在碎片化问题中有更少的问题。所以为了图简单而使用libc我个人是不认可的。
百度没有找到答案,谷歌了一下也没发现什么方法,于是我决定自己寻找答案。那我们就看看这个jemalloc到底是啥?记住我们是程序员,上github一查就知道了。官网地址:https://github.com/jemalloc/jemalloc

那么剩下的就简单了,缺啥装啥呗:

yum install -y bzip2
wget https://github.com/jemalloc/jemalloc/releases/download/5.1.0/jemalloc-5.1.0.tar.bz2
tar jxvf ./jemalloc-5.1.0.tar.bz2
cd jemalloc-5.1.0
./configure
make
make install



第2个报错

继续make,发现再次报错:

cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory

解决方法:

缺少编译文件,编译一下就好了

cd /app/redis-4.0.10/deps/
make lua hiredis linenoise jemalloc


1
2
3
第3个报错

继续make,发现没有报错,执行make test提示缺少tcl > 8.5,老规矩缺啥补啥:

yum install -y tcl
make test


1
2
第4个报错

好吧,是不是我人品太差了,make test的测试用例过不了,最后我把问题锁定在这里,大概意思是时区有问题:

make[1]: warning:  Clock skew detected.  Your build may be incomplete.
1
看了看确实时区不对,解决办法,改时区呗:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
make test
# 仍然报同样的错误,我怀疑可能是文件解压导致的时区错乱问题
rm -rf /app/redis
tar zxvf redis-4.0.10.tar.gz -C /app/
make成功
make test成功


总结

至此大工告成,总结一下遇到的问题,都不是问题,多观察多思考多百度即可解决。至于是否要将jemalloc修改为libc,我个人是不喜欢的,性格使然,做技术就应该不能妥协这种问题,即使只是这样一点点的调优。最后放上测试成功的图: 

 

 

--------------------- 
作者:Cooder_SXK 
来源:CSDN 
原文:https://blog.csdn.net/Cooder_SXK/article/details/80837063 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值