gpt4 book ai didi

c++ - 当我使用共享库编译并运行该程序时,为什么 tcmalloc 会失败?

转载 作者:行者123 更新时间:2023-12-03 12:50:31 26 4
gpt4 key购买 nike

代码与此处的代码类似: Why tcmalloc don't print function name, which provided via dlopen

生成文件:

  • 全部:
  • g++ -fPIC -g -c共享.cpp -ltcmalloc
  • g++ -shared -o共享库/libshared.so -g共享.o -ltcmalloc
  • g++ -L共享库/-g main.cpp -ldl -ltcmalloc

当我执行我的程序时:

$ HEAPCHECK=normal ./a.out
No live heap object at 0x2582aa0 to ignore
Check failed: heap_profile->FindAlloc(test_str, &size): our own new/delete not linked?
Aborted (core dumped)

带核心文件的 gdb 说:

Core was generated by `./a.out'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f51bfef6cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'

最佳答案

看起来你的代码不从 main.cpp 调用 malloc/new 导致 linked 无法链接libtcmalloc.so 到 ./a.out。 IE。你可以通过 ldd ./a.out 看到它。这不是它应该如何工作的。

由于此 tcmalloc 与您的共享一起加载对象太晚了并且不受支持。

您可以解决这个“倡议”(显然,像往常一样,善意的结果)通过在前面添加 -Wl,--no-as-needed-ltcmalloc 当您构建主可执行文件时。

关于c++ - 当我使用共享库编译并运行该程序时,为什么 tcmalloc 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com