在Linux安装和编译jemalloc的方法

一、安装包下载

1.1从github上下载jemalloc程序,有两种方式,一种是下载gz文件,另一种是下载工程或clone工程文件。使用方法二下载或clone时没有configure、make等文件,不知道为什么,没深入研究。所以使用第一种方法直接下载gz压缩包,建议在linux环境下载。

下载路径如下:

https://github.com/jemalloc/jemalloc/releases

1.2 解压到自定义目录

二、编译调试

2.1 配置安装根目录,编译工程

./configure –prefix=/usr/local/jemalloc

make

make install

2.2 编译好后,在/usr/local/jemalloc会生成bin、libs等文件

3. 测试环境

3.1 进入工程环境,创建测试文件夹(neq)和测试文件(app.c)

#include

#include

void do_something(size_t i) {

        // Leak some memory.

        malloc(i * 100);

}

int main(int argc, char **argv) {

        for (size_t i = 0; i < 1000; i++) {

                do_something(i);

        }

        // Dump allocator statistics to stderr.

        malloc_stats_print(NULL, NULL, NULL);

        return 0;

}

 

3.2 编译app.c文件

编译时,会出现找不到jmalloc.h头文件错误,使用-I指定h文件目录,使用-L指定库文件目录,使用-l指定库文件名称,具体参数可以看到gcc说明。

使用如下命令编译:gcc app.c –o app –I’/usr/local/jemalloc/include’ –L’/usr/local/jemalloc/lib’ -ljemalloc

3.3 由于libjemalloc.so.2没有加入系统,所以在执行时提示libjemalloc.so.2无法打开或找不到错误。

error while loading shared libraries: libjemalloc.so.2: cannot open shared object file: No such file or directory解决办法是把libjemalloc.so.2加入/etc/ld.so.conf中,操作如下:
  1. # vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
  1. 看看/etc/ld.so.conf.d目录下的文件:
# ls /etc/ld.so.conf.d
kernel-3.10.0-327.4.4.el7.x86_64.conf
dyninst-x86_64.conf                     
libiscsi-x86_64.conf
kernel-3.10.0-229.20.1.el7.x86_64.conf  
  1. 在该目录下创建一个jemalloc.conf文件(文件名任意),内容如下:
/usr/local/jemalloc/lib/

保存退出。 
4) 执行如下命令让文件生效:

sudo /sbin/ldconfig

再次启动Terminal。

4. 运行app程序,显示内存内容,jemalloc测试成功。

参考文档:

  1. Getting Started

https://github.com/jemalloc/jemalloc/wiki/Getting-Started

https://github.com/jemalloc/jemalloc/blob/dev/INSTALL.md

  1. jemalloc在linux上从安装到使用

https://blog.csdn.net/xiaofei_hah0000/article/details/52214592

  1. jemalloc Linux 安装与使用方法

https://blog.csdn.net/a193314/article/details/54345799

  1. Linux编译程序时找不到头文件的解决办法

https://blog.csdn.net/iw1210/article/details/53515259

  1. linux 编译指定库、头文件的路径问题

https://blog.csdn.net/jiaweizou/article/details/8153897

  1. Linux下找不到so文件的解决办法

https://blog.csdn.net/rznice/article/details/50857220

你可能感兴趣的:(基础知识)