Ubuntu20.04,编译安装BCC

https://github.com/iovisor/bcc/blob/master/INSTALL.md

一、内核配置

In general, to use these features, a Linux kernel version 4.1 or newer is required.

In addition, the kernel should have been compiled with the following flags set:

CONFIG_BPF=y

CONFIG_BPF_SYSCALL=y

optional, for tc filters

CONFIG_NET_CLS_BPF=m

optional, for tc actions

CONFIG_NET_ACT_BPF=m

CONFIG_BPF_JIT=y

for Linux kernel versions 4.1 through 4.6

CONFIG_HAVE_BPF_JIT=y

for Linux kernel versions 4.7 and later

CONFIG_HAVE_EBPF_JIT=y

optional, for kprobes

CONFIG_BPF_EVENTS=y

Need kernel headers through /sys/kernel/kheaders.tar.xz

CONFIG_IKHEADERS=y

There are a few optional kernel flags needed for running bcc networking examples on vanilla kernel:

CONFIG_NET_SCH_SFQ=m

CONFIG_NET_ACT_POLICE=m

CONFIG_NET_ACT_GACT=m

CONFIG_DUMMY=m

CONFIG_VXLAN=m

Kernel compile flags can usually be checked by looking at /proc/config.gz or /boot/config-<kernel-version>.

二、源码方式编译安装BCC

  • LLVM 3.7.1 or newer, compiled with BPF support (default=on)

  • Clang, built from the same tree as LLVM

  • cmake (>=3.1), gcc (>=4.7), flex, bison

  • LuaJIT, if you want Lua support

  • Optional tools used in some examples: arping, netperf, and iperf

1、安装依赖

For Focal (20.04.1 LTS)

bash 复制代码
# apt install -y zip bison build-essential cmake flex git libedit-dev libllvm12 llvm-12-dev ibclang-12-dev python zlib1g-dev libelf-dev libfl-dev python3-setuptools liblzma-dev arping netperf iperf

2、编译安装BCC

bash 复制代码
# git clone https://github.com/iovisor/bcc.git
# mkdir bcc/build; cd bcc/build
# cmake ..
-- Latest recognized Git tag is v0.31.0
-- Git HEAD is cb1ba20f4800f556dc940682ba7016c50bd0a3ac
-- Revision is 0.31.0+cb1ba20f (major 0, minor 31, patch 0)
-- Kernel release: 5.4.0-196-generic
-- Kernel headers: /usr/src/linux-headers-5.4.0-196-generic
-- Found LLVM: /usr/lib/llvm-12/include 12.0.0 (Use LLVM_ROOT envronment variable for another version of LLVM)
-- Could NOT find LibDebuginfod (missing: LIBDEBUGINFOD_LIBRARIES LIBDEBUGINFOD_INCLUDE_DIRS)  # https://github.com/iovisor/bcc/issues/3601 注释CMakeLists.txt的行find_package(LibDebuginfod),可以消除这个告警
-- Using static-libstdc++
-- Configuring done
-- Generating done
-- Build files have been written to: /root/bcc/build
bash 复制代码
# make
[ 10%] Built target bpf-static
[ 12%] Built target clang_frontend-objects
[ 14%] Built target bcc-loader-static
[ 15%] Built target api-objects
[ 16%] Built target usdt-static
[ 16%] Built target clang_frontend
[ 21%] Built target bcc-static
[ 30%] Built target bpf-shared
[ 31%] Built target api-static
[ 37%] Built target bcc-shared
[ 38%] Built target bcc_py_python3
[ 39%] Built target bcc-lua
[ 39%] Built target bps
[ 39%] Built target CGroupTest
[ 39%] Built target UseExternalMap
[ 39%] Built target FollyRequestContextSwitch
[ 40%] Built target SkLocalStorageIterator
[ 41%] Built target HelloWorld
[ 42%] Built target RecordMySQLQuery
[ 43%] Built target CPUDistribution
[ 44%] Built target TaskIterator
[ 45%] Built target KFuncExample
[ 45%] Built target TCPSendStack
[ 45%] Built target KModRetExample
[ 46%] Built target LLCStat
[ 46%] Built target RandomRead
[ 48%] Built target PyPerf
[ 90%] Built target man
[ 91%] Built target test_static
[ 92%] Built target usdt_test_lib
[ 93%] Built target debuginfo_test_lib
[ 94%] Built target zip_archive
[ 94%] Built target debuginfo
[ 94%] Built target with_gnu_debuglink
[ 94%] Built target debuginfo_xz
[ 94%] Built target with_gnu_debugdata
[ 94%] Linking CXX executable test_libbcc
[100%] Built target test_libbcc

# make install

# cmake -DPYTHON_CMD=python3 .. # build python3 binding
-- Latest recognized Git tag is v0.31.0
-- Git HEAD is cb1ba20f4800f556dc940682ba7016c50bd0a3ac
-- Revision is 0.31.0+cb1ba20f (major 0, minor 31, patch 0)
-- Kernel release: 5.4.0-196-generic
-- Kernel headers: /usr/src/linux-headers-5.4.0-196-generic
-- Found LLVM: /usr/lib/llvm-12/include 12.0.0 (Use LLVM_ROOT envronment variable for another version of LLVM)
-- Using static-libstdc++
-- Configuring done
-- Generating done
-- Build files have been written to: /root/bcc/build

# pushd src/python/
~/bcc/build/src/python ~/bcc/build

# make
[100%] Built target bcc_py_python3

# make install
# popd
~/bcc/build
相关推荐
91刘仁德24 分钟前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp
水饺编程1 小时前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
牢姐与蒯1 小时前
一点小碎片——每个线程独有的东西——上下文+栈
linux·运维·服务器
小此方1 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
yunwei371 小时前
eBPF 开发实践:使用 eBPF 隐藏进程或文件信息
linux·后端·性能优化
芝麻开门2921 小时前
Linux文件系统
linux·文件系统
羔羊++1 小时前
24_实验二十三_运行内核
linux
羔羊++1 小时前
23_实验二十二_移植网卡驱动
linux
水饺编程1 小时前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
0+1111 小时前
Linux --进程间关系和守护进程
linux·运维·服务器