文章目录
-
- [1. 引言](#1. 引言)
- [2. 安装开发工具和依赖](#2. 安装开发工具和依赖)
- [3. 下载内核源代码](#3. 下载内核源代码)
- [4. 编译 `perf` 工具](#4. 编译
perf
工具) - [5. 验证 `perf` 工具的安装](#5. 验证
perf
工具的安装) - [6. 解决编译中的依赖问题(选看)](#6. 解决编译中的依赖问题(选看))
-
- [6.1 安装缺少的依赖项](#6.1 安装缺少的依赖项)
- [6.2 手动编译 `libtraceevent` 库](#6.2 手动编译
libtraceevent
库) -
- 安装libtraceevent编译工具和依赖
- [克隆 `libtraceevent` 源代码](#克隆
libtraceevent
源代码) - [编译和安装 `libtraceevent`](#编译和安装
libtraceevent
)
- [7. 如何禁用不需要的功能?(选看)](#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
工具之前,确保安装了必要的开发工具和库:
bash
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. 下载内核源代码
下载与当前内核版本匹配的内核源代码:
bash
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
工具:
bash
cd tools/perf
make
编译完成后,将生成的 perf
可执行文件复制到系统路径中:
bash
sudo cp perf /usr/local/bin/
5. 验证 perf
工具的安装
成功编译后,验证 perf
是否已正确安装并可以使用:
bash
$ perf --version
perf version 6.8.4
6. 解决编译中的依赖问题(选看)
在编译过程中,可能会遇到依赖问题。
6.1 安装缺少的依赖项
首先,安装编译 perf
所需的各种开发库:
bash
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
:
bash
make -j10 NO_LIBTRACEEVENT=1
当然也可以手动编译 libtraceevent
库。
安装libtraceevent编译工具和依赖
首先,安装编译所需的工具和依赖:
bash
sudo apt update
sudo apt install git build-essential autoconf automake libtool pkg-config
克隆 libtraceevent
源代码
从官方库克隆 libtraceevent
源代码:
bash
git clone https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git
cd libtraceevent
编译和安装 libtraceevent
编译并安装 libtraceevent
:
bash
make
sudo make install
sudo ldconfig
7. 如何禁用不需要的功能?(选看)
在编译perf
工具时,您可以根据需求禁用某些功能,以减少编译过程中对不必要依赖项的需求。以下是一些常见的禁用选项:
bash
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脚本支持。