You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeagleBone Black Yocto系统perf命令报错的原因及解决方法

问题原因

当前系统中的/usr/bin/perf是一个shell脚本,逻辑如下:

  1. 通过uname -r提取当前内核版本,将版本号简化为两位格式(比如内核版本为4.14.x-xxx时,会提取为4.14)
  2. 尝试执行对应版本的perf工具perf_4.14
  3. 由于系统中不存在perf_4.14这个实际的二进制可执行文件,因此触发报错,提示缺少linux-perf-4.14包。

另外,Yocto是基于构建的嵌入式发行版,没有Debian/Ubuntu体系的apt包管理器,所以网上的apt update类方法完全不适用。

解决方法

方法一:重新构建Yocto镜像时包含perf包

Yocto的meta-oe层提供了perf工具包,在构建镜像时:

  1. 打开构建目录下的conf/local.conf文件
  2. 添加如下配置,将perf包加入镜像:
IMAGE_INSTALL:append = " perf"
  1. 重新构建镜像并烧录到BeagleBone Black,此时系统会包含对应内核版本的perf工具,脚本可正常调用。

方法二:手动编译对应版本的perf工具

如果无法重新构建镜像,可手动编译与当前内核版本匹配的perf:

  1. 获取与板上内核完全一致的内核源码(可从BeagleBoard官方仓库或Yocto构建时的内核源码目录获取)
  2. 进入源码的tools/perf目录
    • 若在x86主机上交叉编译(推荐,板上资源有限),执行:
      make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
      
    • 若直接在板上编译,确保已安装gcc等编译工具,执行:
      make
      
  3. 编译完成后会生成perf二进制文件,将其复制到板上的/usr/bin/目录,并重命名为perf_4.14(匹配脚本中的调用名称),或者直接替换掉原来的/usr/bin/perf脚本。

方法三:修改现有shell脚本

如果已经有了编译好的perf二进制文件,可直接修改/usr/bin/perf脚本:

  1. 编辑脚本:
    vi /usr/bin/perf
    
  2. 将exec "perf_$version" "$@"这一行,替换为直接指向你的perf二进制路径,比如:
    exec /usr/bin/my_compiled_perf "$@"
    
  3. 保存退出后,即可正常执行perf命令。

内容的提问来源于stack exchange,提问作者ohiliouh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 14:15:19