使用Babeltrace构建Perf(用于从Perf到CTF的转换)失败,未定义对bt_ctf_validate_identifier的引用

时间:2019-01-01 01:35:47

标签: linux perf

我遵循了现有Stackoverflow问题/答案Building Perf with Babeltrace (for Perf to CTF Conversion)

提供的说明

使用Babeltrace转换支持构建linux / tools / perf失败,并出现以下错误:

LINK性能 libperf.a(libperf-in.o): In function event_class_add_field: /tools/perf/util/data-convert-bt.c:988: undefined reference to bt_ctf_validate_identifier collect2: error: ld returned 1 exit status Makefile.perf:567: recipe for target 'perf' failed

我尝试使用从Debian Linux发行版上的软件包安装的Babeltrace构建linux / tools / perf,还尝试从源代码构建Babeltrace。

在这两种情况下,Babeltrace均已成功安装并可用,然后尝试使用Babeltrace CTF支持构建linux / tools / perf。

1 个答案:

答案 0 :(得分:0)

bt_ctf_validate_identifier函数似乎仅在babeltrace的1.5分支中定义和实现,而不是在2.0(v2.0.0-pre4)中定义和实现

https://github.com/efficios/babeltrace/blob/stable-1.5/formats/ctf/ir/utils.c https://github.com/efficios/babeltrace/blob/v1.5.6/formats/ctf/ir/utils.c

75   int bt_ctf_validate_identifier(const char *input_string)

尝试从git标签v1.5.6重新编译并重新安装babeltrace,然后使用此版本清理并重新编译perf。

Linux内核版本4.15-4.20中的

perf工具似乎是为babeltrace的稳定版1.5分支编写的。