在linux中使用源码安装软件时,一般都要先安装gcc环境:
yum -y install gcc gcc-c++
今天在编译安装redis时,在使用make命令编译时,出现下面这个错误:
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.
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 `/root/run_jar/redis-6.2.8/src'
make: *** [all] Error 2
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/root/run_jar/redis-6.2.8/src'
make: *** [install] Error 2
这种情况一般是因为上次的编译失败,有残留的文件,需要清理后重新编译就可以了。
使用下面这个命令清理并重新编译:
make distclean && make
编译没有问题后再执行安装命令:
make install
网上也有方法是:make MALLOC=libc,也就是重新指定内存分配器。但据说不太好,jemalloc内存分配器在实践中处理内存碎片是要比libc好。且jemalloc内存分配器也是包含在源码包里面的,可以在deps目录下看到jemalloc目录