目录
安装
1 确认你的操作系统是ubuntu20.04.06
2 下载并安装zlib1g-dev libelf-dev linux-headers-$(uname -r)-generic
3 安装llvm和clang
4 安装libbpf-dev和bpfcc-tools
验证
1 验证BPF内核特性
2 验证BTF
3 验证BCC工具是否可用
4 验证工具链clang和bpftool版本
安装
1 确认你的操作系统是ubuntu20.04.06
如果版本太低,即使是20.04.x(x<3),也可能安装失败
2 下载并安装zlib1g-dev libelf-dev linux-headers-$(uname -r)-generic
#新建一个文件夹并进入 apt-rdepends zlib1g-dev | grep -v "^ " | sort -u > zlib1g-dev-depend.txt xargs -a zlib1g-dev-depend.txt -I {} apt download {}#新建一个文件夹并进入 apt-rdepends libelf-dev | grep -v "^ " | sort -u > libelf-dev-depend.txt xargs -a libelf-dev-depend.txt -I {} apt download {}#新建一个文件夹并进入 apt-rdepends linux-headers-5.15.0-67-generic | grep -v "^ " | sort -u > linux-headers-5.15.0-67-generic-depend.txt xargs -a linux-headers-5.15.0-67-generic-depend.txt -I {} apt download {}然后依次在这3个文件夹里执行:
sudo dpkg -i *.deb3 安装llvm和clang
没有clang就无法编译bpf程序。这里建议安装llvm12和clang12.因为低版本clang编译bpf程序可能失败。
但是安装完毕后,/usr/bin/下只有clang-12,没有clang。这里建议使用update-alternatives建立一个/usr/bin/clang的链接:
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 12
指令最后那个12的作用是指定clang-12在软连接的次序。假如你在同一个操作系统上既安装了clang-11,又安装了clang-12和clang-13,并且用update-alternatives把它们的次序设置为11,12,13,则操作系统调用clang时,会优先调用次序最大的clang-13
4 安装libbpf-dev和bpfcc-tools
#新建一个文件夹并进入 apt-rdepends libbpf-dev | grep -v "^ " | sort -u > libbpf-dev-depend.txt xargs -a libbpf-dev-depend.txt -I {} apt download {}#新建一个文件夹并进入 apt-rdepends bpfcc-tools | grep -v "^ " | sort -u > bpfcc-tools-depend.txt xargs -a bpfcc-tools-depend.txt -I {} apt download {}分别进入这2个文件夹,安装:
sudo dpkg -i *.deb安装完毕
验证
检查安装是否成功:
1 验证BPF内核特性
sudo bpftool feature probe kernel
2 验证BTF
ls -lh /sys/kernel/btf/vmlinux
3 验证BCC工具是否可用
sudo execsnoop-bpfcc
4 验证工具链clang和bpftool版本
clang --version
bpftool --version