ebpf之基于libbpf-tools开发环境搭建

ebpf相关介绍可参考:Linux 内核观测技术 BPF(书籍) - 知乎

目前对于ebpf介绍的资料很多,但实际的开发案例并不算多,正好最近在研究如何实现用户态程序的函数跟踪,所以就记录下自己的心得,希望对有需要的同学有所启发。

开发环境构建:

 linux 5.4或者更高

cmake 3.14

llvm/clang   17.0.0:          https://github.com/llvm/llvm-project.git

gcc8.3.1

libbpf github master分支源码             https://github.com/libbpf/libbpf

1.cmake安装

源码包下载后解压,到源码目录下执行./configure --prefix=/data/xxxx

make -j 20 && make install

2.安装llvm/clang

下载源码,进入源码目录,执行:

mkdir build && cd build

cmake -DCMAK_INSTALL_PREFIX=/xxx/clang  -DCMAK_BUILD_TYPE=Debug -DCMAK_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm

make -j 8 install-clang-tidy

make j1 install

更新path:  PATH=/xxx/xxx/llvm-project/build/bin:$PATH

3.安装libbpf

github下载源码后进入源码目录下:

先安装依赖:yum install -y elfutils-libelf-devel

cd  libbpf/src && make && make install

环境搭建完成,下载BCC代码:git clone https://github.com/iovisor/bcc.git      

git submodule update --init --recursive

接下来就可以可以在bcc/libbpf-tools目录下进行开发了

可以先试着编译下里面原有的case,确保环境没有问题,再做开发:

(1)bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h

(2)clang -g -o2 -target bpf -D_TARGET_ARCH_x86 -lx86 -l ../src/cc/libbpf/include/uapi -c xxx.bpf.c -o xxx.bpf.o

(3)llvm-strip xxx.bpf.o --no-strip-all -R .BTP 

(4)bpftool gen skeleton xxx.bpf.o > xxx.skel.h

(5)gcc -g -Wall xxx.c -lelf -lbpf -lz -o xxx

如果没有报错,说明环境ok

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱拼就为银

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值