首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

Redis 編譯錯誤 jemalloc/jemalloc.h: No such file or directory 解決方案

     編輯:DB2 教學

Redis 編譯錯誤 jemalloc/jemalloc.h: No such file or directory 解決方案

在編譯 Redis 2.8.18 等版本時,常遇到 zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory 錯誤。這是因為預設配置要求 jemalloc 分配器,但系統未安裝該庫所致。

錯誤現象

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1

根因分析

Redis 的 Makefile 預設在 Linux 系統使用 jemalloc 作為記憶體分配器(因其碎片控制優於 libc malloc)。若系統缺少 jemalloc 開發套件(jemalloc-devel 或 libjemalloc-dev),編譯時找不到頭檔案即報錯。

快速解決方案

方法一:指定使用 libc malloc 編譯(推薦,無額外依賴)

make MALLOC=libc

此命令強制 Redis 使用系統標準 libc 分配器,繞過 jemalloc 依賴,即可順利編譯通過。

方法二:安裝 jemalloc 開發套件(若堅持使用 jemalloc)

  • CentOS/RHEL: yum install jemalloc-devel
  • Ubuntu/Debian: apt-get install libjemalloc-dev
  • 編譯安裝: 從官網下載 jemalloc 源碼,./configure && make && make install

安裝完成後,直接執行 make 即可。

補充說明

Redis 官方文檔說明:

Redis is compiled and linked against libc malloc by default, with the exception of jemalloc being the default on Linux systems.

To force compiling against libc malloc, use: % make MALLOC=libc

生產環境若對記憶體碎片敏感,建議安裝 jemalloc;一般應用場景 MALLOC=libc 完全滿足需求,且減少外部依賴風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved