我在ubuntu 16.04上。
我在这做了什么:
sudo apt-get install google-perftools libgoogle-perftools-dev
FindGperftools.cmake
重命名为GperftoolsConfig.cmake
并将其放入我的包装中的cmake
文件夹中CMakelists.txt
:
set (Gperftools_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake/")
find_package(Gperftools REQUIRED)
target_link_libraries(my_executable ${GPERFTOOLS_PROFILER})
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之前传递)。