首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误jemalloc/jemalloc.h:生成Redis时没有这样的文件或目录

错误jemalloc/jemalloc.h:生成Redis时没有这样的文件或目录
EN

Stack Overflow用户
提问于 2017-11-03 11:47:27
回答 2查看 20.2K关注 0票数 25

我正在尝试设置我的Redis服务器,当执行make命令时,得到错误:"jemalloc/jemalloc.h:当创建Redis时没有这样的文件或目录“,我已经尝试了我能找到的所有步骤,例如make distclean或make MALLOC=libc。我在CentOS上工作,它在我的另一台Ubuntu服务器上工作。

系统信息: Linux ec4t02229 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 GNU/Linux

以下是我的输出,任何建议都将不胜感激。

代码语言:javascript
复制
[root@ec4t02229 redis-4.0.2]# make
cd src && make all
make[1]: Entering directory `/home/fenxiaop/redis-4.0.2/src'
CC Makefile.dep
make[1]: Leaving directory `/home/fenxiaop/redis-4.0.2/src'
make[1]: Entering directory `/home/fenxiaop/redis-4.0.2/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov     redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: Entering directory `/home/fenxiaop/redis-4.0.2/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
    make[2]: Leaving directory `/home/fenxiaop/redis-4.0.2/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -    I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: Entering directory `/home/fenxiaop/redis-4.0.2/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory `/home/fenxiaop/redis-4.0.2/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb x86_64 net.c
cc: error: x86_64: No such file or directory
make[3]: *** [net.o] Error 1
make[3]: Leaving directory `/home/fenxiaop/redis-4.0.2/deps/hiredis'
make[2]: *** [hiredis] Error 2
make[2]: Leaving directory `/home/fenxiaop/redis-4.0.2/deps'
make[1]: [persist-settings] Error 2 (ignored)
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory    
 #include <jemalloc/jemalloc.h>
                           ^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/home/fenxiaop/redis-4.0.2/src'
make: *** [all] Error 2
EN

回答 2

Stack Overflow用户

发布于 2019-11-06 23:47:37

在构建Redis时,通过设置MALLOC环境变量来选择非默认内存分配器。默认情况下,Redis是针对libc malloc进行编译和链接的,但jemalloc是Linux系统上的默认设置。之所以选择这个默认值,是因为jemalloc已经证明比libc malloc有更少的碎片问题。3.

要针对libc malloc强制编译,请使用:

% make MALLOC=libc:

要在Mac OS X系统上针对jemalloc进行编译,请使用:

% make MALLOC=jemalloc

来源:https://github.com/redis/redis/blob/6.0/README.md#allocator

票数 32
EN

Stack Overflow用户

发布于 2021-05-05 13:22:58

在redis-6.2.0上进行构建时,我也遇到了同样的错误。

通过执行make distclean,我就摆脱了这个错误

代码语言:javascript
复制
[manjunath@beta-test redis-6.2.0]$ make distclean
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47088171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档