猿博园

记录生活及工作中的点点滴滴

0%

redis 编译报致命错误:jemalloc/jemalloc.h:没有那个文件或目录

一、问题

centOS7环境下安装redis-5.0.4时在编译阶段遇到了致命错误:jemalloc/jemalloc.h:没有那个文件或目录

二、原因分析

RedisREADME.md有如下一段话:

Allocator

Selecting a non-default memory allocator when building Redis is done by setting
the MALLOC environment variable. Redis is compiled and linked against libc
malloc by default, with the exception of jemalloc being the default on Linux
systems. This default was picked because jemalloc has proven to have fewer
fragmentation problems than libc malloc.

To force compiling against libc malloc, use:

% make MALLOC=libc

To compile against jemalloc on Mac OS X systems, use:

% make MALLOC=jemalloc

说关于分配器 allocator, 如果有MALLOC 这个环境变量,会有用这个环境变量的 去建立Redis。而且libc 并不是默认 的分配器,默认的是 jemalloc, 因为jemalloc被证明比libc有更少的fragmentation problems。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数。

三、解决方法

1、make 时指定分配器为libc

1
make MALLOC=libc

2、安装jemalloc分配器

1. 安装jemalloc

1
2
3
4
5
6
7
8
9
10
11
wget https://github.com/jemalloc/jemalloc/releases/download/5.0.1/jemalloc-5.0.1.tar.bz2
tar -jxvf jemalloc-5.0.1.tar.bz2
cd jemalloc-5.0.1
yum install autogen autoconf

./autogen.sh
make -j2
make install
ldconfig
cd ../
rm -rf jemalloc-5.0.1 jemalloc-5.0.1.tar.bz2

2. 重新编译

首先删除之前已经解压的 redis 包,重新解压。然后在执行 makemake install 即可。

--------------------------本文结束感谢您的阅读--------------------------
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!