cmake:无法链接谷歌分析器(gperftools)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake:无法链接谷歌分析器(gperftools)相关的知识,希望对你有一定的参考价值。
我在ubuntu 16.04上。
我在这做了什么:
- 安装了gperftools:
sudo apt-get install google-perftools libgoogle-perftools-dev
- 从https://github.com/vast-io/vast/blob/master/cmake/FindGperftools.cmake下载了FindGperftools.cmake
- 将
FindGperftools.cmake
重命名为GperftoolsConfig.cmake
并将其放入我的包装中的cmake
文件夹中 - 添加到
CMakelists.txt
:set (Gperftools_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake/") find_package(Gperftools REQUIRED)
- 在相同的CMakelists.txt中,链接我的可执行文件:
target_link_libraries(my_executable ${GPERFTOOLS_PROFILER})
- 在终端中,导出CPUPROFILE环境变量:
export CPUPROFILE=/my_path/prof.out
- 在同一个终端中,运行可执行文件:
./my_executable
没有错误消息,但未创建日志文件/my_path/prof.out
。
如果我在“my_executable”上运行“ldd”,则它不会显示与profiler的任何关联(ldd ./my_executable | grep profil
不会产生任何结果)。然而,当查看构建文件夹中的文件时,编译器似乎进行了链接(-lprofile
就在那里)。
我可能忘记了什么?
注意:不确定它是否相关,但我使用catkin。
答案
这看起来像ubuntu(和非标准)链接器功能,不链接库直接不使用哪些符号。尝试在LDFLAGS中添加-Wl,-no-as-needed(并确保在-lprofiler之前传递)。
以上是关于cmake:无法链接谷歌分析器(gperftools)的主要内容,如果未能解决你的问题,请参考以下文章
我已经设置了 CPUPROFILE 环境变量并链接了 -lprofiler。为啥 gperftools 没有启动分析器?
堆状态分析的利器——gperftools的Heap Profiler