tcmalloc无法使用-ltcmalloc_minimal在ubuntu上运行

tcmalloc无法使用-ltcmalloc_minimal在ubuntu上运行,ubuntu,g++,tcmalloc,gperftools,Ubuntu,G++,Tcmalloc,Gperftools,我使用apt get install libtcmalloc-minimal4在Ubuntu 14.0上安装了tcmalloc 我采取了以下步骤: ln-s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so 将我的可执行文件链接到-ltcmalloc_minimal 跑步后 在代码中,我看不到任何性能差异 我尝试使用HEAPCHECK运行以检查是否正在使用tcmalloc,但没有发现任何与HEAPCHECK相关的警告 我的程序包含malloc

我使用apt get install libtcmalloc-minimal4在Ubuntu 14.0上安装了tcmalloc

我采取了以下步骤:

ln-s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so
将我的可执行文件链接到-ltcmalloc_minimal

跑步后 在代码中,我看不到任何性能差异

我尝试使用HEAPCHECK运行以检查是否正在使用tcmalloc,但没有发现任何与HEAPCHECK相关的警告

我的程序包含malloc调用和openMP。还有什么我需要做的吗?
如何检查以确保我的程序正在使用tcmalloc?

从google perftool group获得以下响应,以检查我的程序是否正在使用tcmalloc:

将环境变量MALLOCSTATS设置为1或2应该会打印一些 最后是tcmalloc统计数据


例如,MALLOCSTATS=2./myprogram

从google perftool group获得以下响应,以检查我的程序是否正在使用tcmalloc:

将环境变量MALLOCSTATS设置为1或2应该会打印一些 最后是tcmalloc统计数据

例如,MALLOCSTATS=2./myprogram

我采取了以下步骤:
ln-s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so
将我的可执行文件链接到
-ltcmalloc\u minimal

一般来说,永远不需要像那样对库进行符号链接。您必须这样做的事实告诉我您没有安装正确的(开发)包

ldd
给出“非动态可执行文件”

在这种情况下,您的可执行文件保证没有链接到
libtcmalloc\u minimal.so

我已使用
-L

它不会将可执行文件链接到任何特定的库,它只是告诉链接器在
目录中查找库。您需要实际请求链接器使用
-ltcmalloc_minimal
标志查找
libtcmalloc_minimal

我采取了以下步骤:
ln-s libtcmalloc_minimal.so.4.1.2 libtcmalloc_minimal.so
将我的可执行文件链接到
-ltcmalloc\u minimal

一般来说,永远不需要像那样对库进行符号链接。您必须这样做的事实告诉我您没有安装正确的(开发)包

ldd
给出“非动态可执行文件”

在这种情况下,您的可执行文件保证没有链接到
libtcmalloc\u minimal.so

我已使用
-L


它不会将可执行文件链接到任何特定的库,它只是告诉链接器在
目录中查找库。您需要实际要求链接器使用
-ltcmalloc_minimal
标志查找
libtcmalloc_minimal

您可以在malloc()处设置断点,例如在GDB中:

(gdb) break malloc
Breakpoint 2 at 0x7ffff72b2130 (3 locations)
如果正在使用TC Malloc,则在进行动态分配时,您将看到以下内容:

Breakpoint 2, 0x00007ffff7ba8c20 in tc_malloc () from  /lib64/libtcmalloc_minimal.so.4
(gdb) bt
#0  0x00007ffff7ba8c20 in tc_malloc () from /lib64/libtcmalloc_minimal.so.4
#1  0x00007ffff729e45d in __fopen_internal () from /lib64/libc.so.6

您可以在malloc()处设置断点,例如在GDB中:

(gdb) break malloc
Breakpoint 2 at 0x7ffff72b2130 (3 locations)
如果正在使用TC Malloc,则在进行动态分配时,您将看到以下内容:

Breakpoint 2, 0x00007ffff7ba8c20 in tc_malloc () from  /lib64/libtcmalloc_minimal.so.4
(gdb) bt
#0  0x00007ffff7ba8c20 in tc_malloc () from /lib64/libtcmalloc_minimal.so.4
#1  0x00007ffff729e45d in __fopen_internal () from /lib64/libc.so.6

它给出了“非动态可执行文件”。我正在使用make文件,它没有给出任何错误,因为我使用-L链接了库。根据我所读到的,malloc将被转换为tcmalloc。我不必对我的程序做任何更改。如果我错了,请纠正我。链接库的正确方法是通过-ltcmalloc_minimaliaksei,您对google perftool group的回复确实帮助了我的查询。我也不得不在Uubntu 16.04中使用此解决方法,因此问题尚未解决。请注意,我将符号链接到libtcmalloc_minimal.so.4,这样库的任何小版本升级都不会破坏我的符号链接。它给出了“非动态可执行文件”。我正在使用make文件,它没有给出任何错误,因为我使用-L链接了库。根据我所读到的,malloc将被转换为tcmalloc。我不必对我的程序做任何更改。如果我错了,请纠正我。链接库的正确方法是通过-ltcmalloc_minimaliaksei,您对google perftool group的回复确实帮助了我的查询。我也不得不在Uubntu 16.04中使用此解决方法,因此问题尚未解决。请注意,我将其符号链接到libtcmalloc_minimal.so.4,这样库的任何小版本升级都不会破坏我的符号链接。我还必须在Uubntu 16.04中使用此解决方案,因此问题尚未解决。我还必须在Uubntu 16.04中使用此解决方案,因此问题尚未解决。