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
相关推荐
一起逃去看海吧26 分钟前
dify-03
java·linux·开发语言
fengyehongWorld27 分钟前
Linux 根据端口进行的相关查询
linux
lihao lihao30 分钟前
linux匿名管道
linux·运维·服务器
うちは止水33 分钟前
weston出图调试
linux·wayland·weston
STDD34 分钟前
Farming Simulator 25(模拟农场 25) Linux 专服搭建完全指南
linux·运维·javascript
好好风格1 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
用户2367829801682 小时前
Linux pgrep 命令详解:按名称查找进程 PID 的高效方法
linux
zzipeng2 小时前
Linux LCD驱动
linux·运维·服务器
思麟呀2 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows