从源代码/从头开始编译 linux perf 工具及其依赖的内核模块

Posted

技术标签:

【中文标题】从源代码/从头开始编译 linux perf 工具及其依赖的内核模块【英文标题】:Comiling linux perf tools and its dependent kernel modules from source/scratch 【发布时间】:2020-04-24 14:59:05 【问题描述】:

我正在使用 linux perf 工具来分析共享库。虽然它在 Ubuntu 上运行良好,但现在我想在嵌入式 linux 上运行它,我不能使用 apt-get 在嵌入式 linux 上安装 linux perf 工具。这就是为什么我必须从头开始编译所有内容。

任何人都可以指导如何从头/源代码编译 linux perf 工具和依赖的内核模块。

我们将不胜感激。

谢谢 阿尔斯兰·阿里

【问题讨论】:

"任何人都可以指导如何从头/源代码编译 linux perf 工具和依赖的内核模块。" - 在 Stack Overflow,我们不编写 guides 和其他教程。 尝试编译工具,如果遇到具体问题,请搜索该问题,如果没有任何帮助,请在 Stack Overflow 上提问。 @Tsyvarev 非常感谢您的回复,我会寻找可能的解决方案。谢谢 【参考方案1】:

perf 的源代码位于 linux-kernel/tools/perf。因此,请使用与您的主板相同的内核。

要构建 perf 工具,请转到 perf 目录,如上所述。然后运行以下命令

这些命令将根据您的交叉工具链而改变

export CC=arm-linux-gnueabihf-gcc
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

构建完成后,将 perf 二进制文件复制到您的板 /bin 目录并 为其添加执行权限。然后你就可以使用这个功能了。

【讨论】:

谢谢,所以我几天前尝试的是在存储库下面克隆 git clone git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 然后 cd linux/tools/perf && make。最后是 cp perf/usr/bin。但是上面链接的问题会克隆整个内核并且它的文件很大。 您刚才提到您使用的是嵌入式Linux。这意味着您将拥有主板的 linux 内核源代码。 是的,这是该项目的最终要求,但我首先尝试的是测试如何使用 ubuntu 从笔记本上的源代码编译 perf 工具。 为了您的测试,您可以下载更短的 tar 文件。例如,mirrors.edge.kernel.org/pub/linux/kernel/v4.x/…。同样,所有内核的列表如下:mirrors.edge.kernel.org/pub/linux/kernel 我试过上面的 tar 文件,它工作得很好。我唯一想问的是在 linux/tools/perf 中进行 make 之前,它需要两个额外的依赖项,即 flex 和 bison,我想避免使用 apt-get 安装它们

以上是关于从源代码/从头开始编译 linux perf 工具及其依赖的内核模块的主要内容,如果未能解决你的问题,请参考以下文章

perf:无法合成 bpf 事件

使用 linux perf 工具测量应用程序的 FLOP

Linux/Android 性能优化工具 perf

perf工具_嵌入式设备_性能分析

如何使用 linux perf 工具进行代码理解

Linux perf 工具运行问题