kdt*_*kdt 8 c++ malloc linker tcmalloc
当我使用时LD_PRELOAD=/usr/local/lib/libtcmalloc.so,我对malloc的所有调用都变成了tcmalloc调用.但是,当我静静地链接到libtcmalloc时,我发现直接malloc被调用,除非我仍然使用该LD_PRELOAD设置.
那么我怎么能以这样的方式静态编译tcmalloc,使我的mallocs挂钩到tcmalloc?
笔记:
Cli*_*ord 12
符号在第一个匹配的基础上解析.您需要确保链接器在 libc.a 之前搜索libtcmalloc.a.我假设你没有明确地链接libc.a,因为你通常不需要这样做.解决方案是指定-nostdlibs,然后按照您希望它们搜索的顺序显式链接所有必需的库.通常类似于:
-nostdlibs -llibtcmalloc -llibm -llibc -llibgcc
Run Code Online (Sandbox Code Playgroud)
另一种可能更简单的解决方案是链接解析tcmalloc而不是静态库所需的目标文件,因为目标文件在解析符号时优先于库.
| 归档时间: |
|
| 查看次数: |
6670 次 |
| 最近记录: |