redis 安装报错 jemalloc/jemalloc.h: No such file or directory。

在尝试安装Redis时遇到jemalloc/jemalloc.h找不到的问题,大多数网上解决方案并不准确。错误源于编译时gcc未安装或上次编译残留导致。正确做法是清理编译残留并重新编译,确保使用jemalloc作为内存分配器,因为jemalloc在内存管理上优于libc,并已包含在Redis源码的deps目录下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于redis安装的这个错误,网上大部分文章的对这个问题的解答都是有误的。所以在这里单列出来。

错误内容:

jemalloc/jemalloc.h: No such file or directory。 image

文档
针对这个错误,我们可以在README.md 文件中看到解释。


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

Verbose build

网上错误解决办法
网上大部分解决办法都是错误的,如下文:

(错误解决办法)

make MALLOC=libc

正确解决办法
正确解决办法(针对2.2以上的版本)
清理上次编译残留文件,重新编译

make distclean  && make

导致出现这个错误的原因
  错误的本质是我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执行make ,这时就出现了

jemalloc/jemalloc.h: No such file or directory。

这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。

网上的解决办法是有什么错误吗?
  网上的解决办法虽然最后也是可以成功安装好 redis ,但是是有一些隐患的,首先我们要知道redis 需要使用内存分配器的, make MALLOC=jemalloc 就是指定内存分配器为 jemalloc ,make MALLOC=libc 就是指定内存分配器为 libc ,这个是有安全隐患的,jemalloc 内存分配器在实践中处理内存碎片是要比libc 好的,而且在README.md 文档也说明到了,jemalloc内存分配器也是包含在源码包里面的,可以在deps 目录下看到 jemalloc 目录。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值