Linux: 手动编译安装指定内核的perf工具

2024-08-31 13:44

本文主要是介绍Linux: 手动编译安装指定内核的perf工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. 引言
    • 2. 安装开发工具和依赖
    • 3. 下载内核源代码
    • 4. 编译 `perf` 工具
    • 5. 验证 `perf` 工具的安装
    • 6. 解决编译中的依赖问题(选看)
      • 6.1 安装缺少的依赖项
      • 6.2 手动编译 `libtraceevent` 库
        • 安装libtraceevent编译工具和依赖
        • 克隆 `libtraceevent` 源代码
        • 编译和安装 `libtraceevent`
    • 7. 如何禁用不需要的功能?(选看)

1. 引言

在安装perf工具时,可能会发现 apt-cache search linux-tools-$(uname -r) 无法找到与之内核版本 (6.8.4-060804-generic) 相匹配的 linux-tools

$ apt-cache search linux-tools-$(uname -r)                                                                                                                                                                             
$ sudo apt-get install linux-tools-$(uname -r)                                                                                                                                                                         
E: Unable to locate package linux-tools-6.8.4-060804-generic
E: Couldn't find any package by glob 'linux-tools-6.8.4-060804-generic'
E: Couldn't find any package by regex 'linux-tools-6.8.4-060804-generic

本文将详细介绍如何编译 perf 工具,并解决编译过程中可能遇到的依赖问题。

关于Perf工具的使用请参考:
使用perf(火焰图)查看热点函数和系统调用最大延迟函数
如何使用perf 统计cpu和内存?

2. 安装开发工具和依赖

在开始编译 perf 工具之前,确保您的系统安装了必要的开发工具和库:

sudo apt update
sudo apt install git build-essential libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

3. 下载内核源代码

下载与当前内核版本匹配的内核源代码,确保能够正确编译 perf 工具:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.4.tar.xz
tar -xf linux-6.8.4.tar.xz
cd linux-6.8.4

4. 编译 perf 工具

进入内核源码的 tools/perf 目录,开始编译 perf 工具:

cd tools/perf
make

编译完成后,将生成的 perf 可执行文件复制到系统路径中:

sudo cp perf /usr/local/bin/

5. 验证 perf 工具的安装

成功编译后,验证 perf 是否已正确安装并可以使用:

$ perf --version                                                                                                                                                                                                       
perf version 6.8.4

6. 解决编译中的依赖问题(选看)

在编译过程中,您可能会遇到多个依赖问题。以下是逐步解决这些问题的方法。

6.1 安装缺少的依赖项

首先,安装编译 perf 所需的各种开发库:

sudo apt update
sudo apt install libdw-dev libunwind-dev libslang2-dev liblzma-dev libzstd-dev libcap-dev libnuma-dev libbabeltrace-dev libperl-dev libtraceevent-dev libpfm4-dev libsystemd-dev elfutils libelf-dev systemtap-sdt-dev

这些依赖项确保 perf 工具的全面功能支持,包括调试、压缩、NUMA、事件跟踪等。

6.2 手动编译 libtraceevent

如果某些依赖项无法安装,您可以选择禁用相应的功能。例如,禁用 libtraceevent

make -j10 NO_LIBTRACEEVENT=1

当然也可以手动编译 libtraceevent 库。

安装libtraceevent编译工具和依赖

首先,安装编译所需的工具和依赖:

sudo apt update
sudo apt install git build-essential autoconf automake libtool pkg-config
克隆 libtraceevent 源代码

从官方库克隆 libtraceevent 源代码:

git clone https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git
cd libtraceevent
编译和安装 libtraceevent

编译并安装 libtraceevent

make
sudo make install
sudo ldconfig

7. 如何禁用不需要的功能?(选看)

在编译perf工具时,您可以根据需求禁用某些功能,以减少编译过程中对不必要依赖项的需求。以下是一些常见的禁用选项:

make -j10 NO_LIBTRACEEVENT=1 NO_LIBUNWIND=1 NO_LIBSLANG=1 NO_LIBBABELTRACE=1 NO_LIBPYTHON=1
  • NO_LIBTRACEEVENT=1: 禁用libtraceevent支持。
  • NO_LIBUNWIND=1: 禁用libunwind支持(用于堆栈跟踪)。
  • NO_LIBSLANG=1: 禁用libslang支持(用于文本用户界面)。
  • NO_LIBBABELTRACE=1: 禁用libbabeltrace支持(用于perf data的CTF格式)。
  • NO_LIBPYTHON=1: 禁用Python脚本支持。

这篇关于Linux: 手动编译安装指定内核的perf工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124070

相关文章

Linux镜像文件制作方式

《Linux镜像文件制作方式》本文介绍了Linux镜像文件制作的过程,包括确定磁盘空间布局、制作空白镜像文件、分区与格式化、复制引导分区和其他分区... 目录1.确定磁盘空间布局2.制作空白镜像文件3.分区与格式化1) 分区2) 格式化4.复制引导分区5.复制其它分区1) 挂载2) 复制bootfs分区3)

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p

java创建xls文件放到指定文件夹中实现方式

《java创建xls文件放到指定文件夹中实现方式》本文介绍了如何在Java中使用ApachePOI库创建和操作Excel文件,重点是如何创建一个XLS文件并将其放置到指定文件夹中... 目录Java创建XLS文件并放到指定文件夹中步骤一:引入依赖步骤二:创建XLS文件总结Java创建XLS文件并放到指定文件

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

Linux下屏幕亮度的调节方式

《Linux下屏幕亮度的调节方式》文章介绍了Linux下屏幕亮度调节的几种方法,包括图形界面、手动调节(使用ACPI内核模块)和外接显示屏调节,以及自动调节软件(CaliseRedshift和Reds... 目录1 概述2 手动调节http://www.chinasem.cn2.1 手动屏幕调节2.2 外接显

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

Java编译错误java.lang.NoSuchFieldError的解决方案详析

《Java编译错误java.lang.NoSuchFieldError的解决方案详析》java.lang.NoSuchFieldError是Java中的一种运行时错误,:本文主要介绍Java编译错... 目录前言解决方案1. 统一JDK版本环境2. 优化maven-compiler-plugin配置3. 清

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进