Redis-0x08-如何将jemalloc编译到项目中
在zmalloc中分析zmalloc_get_allocator_info
函数时,主要依赖的api是je_mallctl
,但是并没有找到这个函数的实现。
在jemalloc的git上我们看到如下描述:
所以,我们需要重新看一遍makefile中的规则编写,尤其是如何将jemalloc编译到项目中的。
1 根目录Makefile
makefile
1 |
|
2 src目录下Makefile
2.1 all
makefile
1 |
|
2.2 redis-server
以redis-server的编译为例进行分析make的整个执行流程。
makefile
1 |
|
2.3 .o汇编
makefile
1 |
|
2.4 .make=prerequisites
makefile
1 |
|
2.5 presist-settings
makefile
1 |
|
重要的是最后一句-(cd ../deps && $(MAKE) $(DEPENDENCY_TARGETS))
,即关注../deps/Makefile
即可。
3 deps目录下Makefile
makefile
1 |
|
至此,结合jemalloc的文档说明,jemalloc为了避免malloc
系列函数的同名混淆,在configure
生成makefile时候指定--with-jemalloc-prefix=je_
,那么编译出来的jemallc系列函数都会变成形如je_malloc
这样。
Redis-0x08-如何将jemalloc编译到项目中
https://bannirui.github.io/2024/04/13/Redis/Redis-0x08-如何将jemalloc编译到项目中/