Ubuntu22.04(内核6.6.17-060617-generic)下perf工具无法使用的问题求助
Ubuntu22.04(内核6.6.17-060617-generic)下perf工具无法使用的问题求助
看起来你遇到的核心问题是这个内核版本并非Ubuntu官方仓库提供的标准内核,所以apt找不到对应的linux-tools包,只能通过手动编译perf工具来解决。我来一步步帮你搞定这个问题:
1. 先安装编译perf所需的全部依赖
编译perf需要很多开发库,你遇到的那些警告/错误都是因为缺失这些依赖,直接用apt安装所有需要的包即可:
sudo apt update sudo apt install build-essential systemtap-sdt-dev clang libperl-dev libzstd-dev libcap-dev libnuma-dev libbabeltrace-dev libpfm4-dev libtraceevent-dev
这些包会覆盖你遇到的所有缺失项,包括sys/sdt.h、clang、perl开发文件、libzstd等。
2. 处理已存在的Linux源码目录
你之前已经clone过Linux内核仓库,目录非空没关系,先进入目录切换到和当前内核完全匹配的源码版本:
cd linux # 检出与当前运行内核一致的6.6.17版本tag git checkout v6.6.17
然后进入perf工具的源码目录:
cd tools/perf
3. 编译并安装perf
用多核心编译提升速度(nproc会自动获取你的CPU核心数):
make -j$(nproc)
如果编译过程中还有某个非必需功能你不想安装(比如Java支持),可以通过添加NO_XXX=1参数跳过,比如:
make -j$(nproc) NO_JAVA=1
编译完成后,把生成的perf二进制文件复制到系统全局路径,这样任何终端都能调用:
sudo cp perf /usr/local/bin/
4. 验证perf是否可用
运行以下命令测试:
perf --version
如果能正常输出版本信息,说明安装成功了。
额外注意事项
- 如果后续运行perf时遇到事件采集失败的问题,需要确认你的内核配置中开启了
CONFIG_PERF_EVENTS=y(这个选项一般在主线内核中默认开启,如果你是自己编译的内核,记得检查这个配置)。 - 编译完成后,你可以删除整个
linux源码目录,不会影响已经安装的perf工具。
备注:内容来源于stack exchange,提问作者cbchuan
相关产品推荐
相关产品推荐

