我正在尝试部署具有LTTng跟踪的示例Orocos组件,如下所述:http://paul.chavent.free.fr/orocos-traces.html
它似乎找到了liborocos-rtt-traces-gnulinux.so
共享库,但找不到 LTTng 符号并返回错误:
符号查找错误:/path/to/liborocos-rtt-traces-gnulinux.so: 未定义的符号:lttng_probe_register
一些建议是改变我的道路以及LDFLAGS,但没有运气。我关注的一些线索:
-
符号查找错误 (linux - c++(
-
https://lists.lttng.org/pipermail/lttng-dev/2014-March/022571.html
-
https://www.mail-archive.com/lttng-dev@lists.lttng.org/msg05580.html
-
https://linux.die.net/man/8/ld.so
修复了它,问题是 rtt-lttng 没有找到 lttng-ust 库,所以我必须找到并指定位置。
我只需要更改 rtt-lttng 中跟踪 directoy 的 CMakeList :
### Trace with lttng-ust
IF (NOT OROBLD_DISABLE_LTTNG_UST)
MESSAGE("Building tracing lib.")
find_path(LTTNG_UST_INCLUDE_DIR lttng/tracepoint.h
HINTS ${PC_LTTNG_UST_INCLUDEDIR} ${PC_LTTNG_UST_INCLUDE_DIRS})
find_library(LTTNG_UST_LIBRARY lttng-ust
HINTS ${PC_LTTNG_UST_LIBDIR} ${PC_LTTNG_UST_LIBRARY_DIRS})
find_library(LIBURCU_BP_LIBRARY urcu-bp
HINTS ${PC_LIBURCU_BP_LIBDIR} ${PC_LIBURCU_BP_LIBRARY_DIRS})
set(Lttng_ust_LIBRARIES ${LTTNG_UST_LIBRARY} ${LIBURCU_BP_LIBRARY} -ldl)
set(Lttng_ust_INCLUDE_DIRS ${LTTNG_UST_INCLUDE_DIR})
INCLUDE_DIRECTORIES( ${Lttng_ust_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})
ADD_LIBRARY( orocos-rtt-traces-gnulinux SHARED "lttng_ust.c")
SET_TARGET_PROPERTIES( orocos-rtt-traces-gnulinux PROPERTIES
SOVERSION "${RTT_VERSION_MAJOR}.${RTT_VERSION_MINOR}"
VERSION "${RTT_VERSION}")
TARGET_LINK_LIBRARIES( orocos-rtt-traces-gnulinux ${Lttng_ust_LIBRARIES})
INSTALL(TARGETS orocos-rtt-traces-gnulinux
LIBRARY DESTINATION lib)
ENDIF(NOT OROBLD_DISABLE_LTTNG_UST)