736 字
4 分钟
01-ebpf环境搭建

eBPF 工具对比#

维度libbpfbpftraceBCC
定位底层 C 库,eBPF 程序开发框架高级脚本语言,动态追踪工具Python/C++ 高级框架
开发语言C / C++bpftrace 专属脚本语法(类 awk)Python + C(内嵌)
上手难度高,需要手写 BPF 程序低,一行命令即可追踪中,Python 封装但配置复杂
性能开销最低,接近原生较低较高,Python 运行时有额外开销
编译方式提前编译(AOT),支持 CO-RE运行时编译(JIT)运行时编译,依赖 LLVM/Clang
内核版本要求较低,CO-RE 支持老内核较高(推荐 4.9+)较高,且强依赖内核头文件
环境部署简单,静态链接友好中等,需要安装 bpftrace 二进制复杂,依赖链长(LLVM、内核头文件等)
适用场景生产环境、嵌入式、性能敏感场景快速调试、临时追踪、一次性分析开发调试、功能丰富的追踪工具开发
可移植性最强,BTF + CO-RE 跨内核版本一般差,强依赖本机内核头文件
社区生态活跃,Linux 内核官方推荐活跃,Brendan Gregg 主导早期主流,逐渐被 libbpf 取代
  • 简单来说 libbpf 就是对于 bpf 的一个封装,我们可以用它来加载 bpf 程序,然后放到内核中去执行
  • bcc,又是对 libbpf 的封装,它主要采用的是 python 这个语言,简化程序的一个开发
  • bpftrace,他是相当于 bpftrace 这个语言,来实现对于一个 bpf 程序的加载

贴一下这三个工具的地址吧,或许后面还会分析源码的时候会用到

基本环境配置要求#

  • 操作系统 安装 Ubuntu 版本即可

libbpf 环境配置&编译#

Terminal window
git clone https://github.com/libbpf/libbpf.git
cd libbpf/src/
make
make install

同时第一次安装的 wsl 可能会缺少C 编译器,安装 gcc 以及 libbpf 的完整编译依赖即可。​

Terminal window
apt-get update
apt install -y gcc build-essential libelf-dev zlib1g-dev pkg-config
  • gcc / build-essential — C 编译器及基础编译工具链
  • libelf-dev — libbpf 解析 ELF 格式必须依赖
  • zlib1g-dev — 压缩支持
  • pkg-config — 编译时查找依赖库路径

bpftrace 环境配置&编译#

先安装依赖,然后进行 clone

Terminal window
apt-get update
apt-get install -y \
asciidoctor \
binutils-dev \
bison \
build-essential \
clang \
cmake \
flex \
libbpf-dev \
libbpfcc-dev \
libcereal-dev \
libdw-dev \
libelf-dev \
libiberty-dev \
libpcap-dev \
llvm-dev \
libclang-dev \
libclang-cpp-dev \
linux-tools-common \
pahole \
xxd \
zip \
zlib1g-dev
git clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/bpftrace/bpftrace.git
cd bpftrace/
mkdir build
cd build/
cmake .. -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Release
make -j8
make install

安装好了,就可以进行使用了

bcc 环境配置&编译#

对于 Ubuntu24.04,可以直接输入下面的命令,GitHub 上面也是有的
还是需要先安装依赖

Terminal window
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \
libllvm18 llvm-18-dev libclang-18-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \
liblzma-dev libdebuginfod-dev arping netperf iperf libpolly-18-dev

接着,clone 项目

Terminal window
git clone https://github.com/iovisor/bcc.git
mkdir bcc/build; cd bcc/build
cmake ..
make
sudo make install
cmake -DPYTHON_CMD=python3 .. # build python3 binding
pushd src/python/
make
sudo make install
popd
01-ebpf环境搭建
https://819229.xyz/posts/01-ebpf环境搭建/
作者
0xnonce
发布于
2026-04-24
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

换条路线

从其他文章中稳定抽取

评论

正在加载评论...
0/2000

    最后更新于 ,距今已过 128

    部分内容可能已过时