問題現象:
我第一次安裝redis時,沒有安裝gcc,報錯了,然後安裝好gcc,後再次執行make命令,安裝redis就出現瞭如上的錯誤
網上錯誤解決辦法
網上大部分解決辦法都是錯誤的,如下文:
(錯誤解決辦法)
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 目錄。
原文地址:https://www.cnblogs.com/oxspirt/p/11392437.html