写在前面
这几天因为工作需要而接触eBPF(Berkeley Packet Filter ),完全小白,从零开始入门。
BPF Compiler Collection (BCC)是eBPF的编程工具,具体请参考github链接:https://github.com/iovisor/bcc。
参考博客
https://blog.csdn.net/zhaowei121/article/details/90639945
1、直接sudo apt install安装CCB
1.1 ubuntu18.04安装BCC
以下命令一键安装:
sudo apt-get install bpfcc-tools linux-headers- $( uname -r )
安装完成后结果如下所示:
跳转到/usr/sbin目录下:
cd /usr/sbin/
ls
可发现bpfcc相关的文件:
测试安装结果:
sudo /usr/share/bcc/tools/execsnoop
发现没有反应,没办法,只能再尝试源码编译安装了。
2、源码编译安装
以下是源码编译安装所需的依赖:
2.1、安装依赖
# Trusty (14.04 LTS) and older
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 Bionic (18.04 LTS)
sudo apt-get -y install bison build-essential cmake flex git libedit-dev \
libllvm6.0 llvm-6.0-dev libclang-6.0-dev python zlib1g-dev libelf-dev libfl-dev
# 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
# For other versions
sudo apt-get -y install bison build-essential cmake flex git libedit-dev \
libllvm3.7 llvm-3.7-dev libclang-3.7-dev python zlib1g-dev libelf-dev
# For Lua support
sudo apt-get -y install luajit luajit-5.1-dev
我的是是ubuntu18.04,所以;
# For Bionic (18.04 LTS)
sudo apt-get update
sudo apt-get -y install bison build-essential cmake flex git libedit-dev \
libllvm6.0 llvm-6.0-dev libclang-6.0-dev python zlib1g-dev libelf-dev libfl-dev
起初我没有sudo apt-get update,结果老是出现下面的报错:
进行update更新之后便没有再出现这些问题。
最后依赖安装完成,结果如下图所示:
接下来,开始编译.
2.2 编译安装bcc
按照以下步骤来即可:
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
起初,我是直接在github上下载的bcc-master,安装完依赖后在里面进行编译,然而始终make的时候出错。
后面发现可能是路径问题导致一些模块没有拷贝到系统目录下,也可能master分支不一样?
待解…
2.3 测试
跑起来了,应该是对了。