本文爲你們講解的是Redis 2.8.18 安裝報錯 error: jemalloc/jemalloc.h: No such file or directory解決方法,感興趣的同窗參考下。html
安裝Redis 2.8.18時報錯:c++
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
redis
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2
在README 有這個一段話。vim
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=jemallocui
說關於分配器allocator, 若是有MALLOC 這個 環境變量, 會有用這個環境變量的 去創建Redis。spa
並且libc 並非默認的 分配器, 默認的是 jemalloc, 由於 jemalloc 被證實 有更少的 fragmentation problems 比libc。code
可是若是你又沒有jemalloc 而只有 libc 固然 make 出錯。 因此加這麼一個參數。server
make MALLOC=libchtm
wget http://download.redis.io/redis-stable.tar.gzblog
tar xvzf redis-stable.tar.gz
cd redis-stable
make
前面3步應該沒有問題,主要的問題是執行make的時候,出現了異常。
異常一:
make[2]: cc: Command not found
異常緣由:沒有安裝gcc
解決方案:yum install gcc-c++
異常二:
zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
異常緣由:一些編譯依賴或原來編譯遺留出現的問題
解決方案:make distclean。清理一下,而後再make。
在make成功之後,須要make test。在make test出現異常。
異常一:
couldn't execute "tclsh8.5": no such file or directory
異常緣由:沒有安裝tcl
解決方案:yum install -y tcl。
在make成功之後,會在src目錄下多出一些可執行文件:redis-server,redis-cli等等。
方便期間用cp命令複製到usr目錄下運行。
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
而後新建目錄,存放配置文件
mkdir /etc/redis
mkdir /var/redis
mkdir /var/redis/log
mkdir /var/redis/run
mkdir /var/redis/6379
在redis解壓根目錄中找到配置文件模板,複製到以下位置。
cp redis.conf /etc/redis/6379.conf
經過vim命令修改
daemonize yes
pidfile /var/redis/run/redis_6379.pid
logfile /var/redis/log/redis_6379.log
dir /var/redis/6379
最後運行redis:
$ redis-server /etc/redis/6379.conf