这个工具包可真不好安装,费了好大的功夫,而且折腾了好几个版本的操作系统才弄好。
首先我也不推荐用命令行安装的方式安装,简直太坑了,一方面有时候找不到对应的版本,有时候就算是安装好了,但是用的时候又说BPF模块无法编译
首先下载ubuntu 20.04 镜像
ubuntu 20.04 阿里云
然后把系统安装好
通过源码对bcc工具包进行编译安装
VER=trusty
echo "deb http://llvm.org/apt/$VER/ llvm-toolchain-$VER-3.7 main
deb-src http://llvm.org/apt/$VER/ llvm-toolchain-$VER-3.7 main" | \
sudo tee /etc/apt/sources.list.d/llvm.list
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get update
# For Eoan (19.10) or Focal (20.04.1 LTS)
sudo apt install -y bison build-essential cmake flex git libedit-dev \
libllvm7 llvm-7-dev libclang-7-dev python zlib1g-dev libelf-dev libfl-dev
git 克隆代码进行编译安装
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
对/usr/share/bcc/tools
进行测试
利用python代码进行测试
#!/usr/bin/python3
from bcc import BPF
# This may not work for 4.17 on x64, you need replace kprobe__sys_clone with kprobe____x64_sys_clone
prog = """
int kprobe__sys_clone(void *ctx) {
bpf_trace_printk("Hello, World!\\n");
return 0;
}
"""
b = BPF(text=prog, debug=0x04)
b.trace_print()
报distutils 错误
# from your project interpreter run
# your_project_python --version
$ python3 --version
Python 3.7.8
sudo apt install python3.7-distutils
# sudo apt install python3-distutils # would just update default python intrpreter