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系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

基于Java实现回调监听工具类

《基于Java实现回调监听工具类》这篇文章主要为大家详细介绍了如何基于Java实现一个回调监听工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录监听接口类 Listenable实际用法打印结果首先,会用到 函数式接口 Consumer, 通过这个可以解耦回调方法,下面先写一个

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor