IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> BPF samples编译及错误解决 -> 正文阅读

[系统运维]BPF samples编译及错误解决

先阅读samples/bpf/README.rst。

非常关键:编译最新代码,llvm/llc和clang版本要高于10.0.0,使用llc-12和clang-12可以编译成功。

llc --version

? LLVM version 10.0.0

clang --version

clang version 10.0.0-4ubuntu1?

这两个版本,无法全部编译最新的bpf用例。

linux-next编译BPF:

make menuconfig

make bzImage

make headers_install

make M=samples/bpf/ LLC=llc-12 CLANG=clang-12

注:使用make defconfig需要打开这两个宏

CONFIG_BPF=y

CONFIG_DEBUG_INFO_BTF=y

CONFIG_BPF_SYSCALL=y

alpha@mascot ~/Workspace/linux/linux-next $ grep BTF .config

CONFIG_VIDEO_SONY_BTF_MPX=m

CONFIG_DEBUG_INFO_BTF=y

CONFIG_PAHOLE_HAS_SPLIT_BTF=y

CONFIG_DEBUG_INFO_BTF_MODULES=y

# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set

alpha@mascot ~/Workspace/linux/linux-next $ grep BPF .config

CONFIG_BPF=y

CONFIG_HAVE_EBPF_JIT=y

CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y

# BPF subsystem

CONFIG_BPF_SYSCALL=y

CONFIG_BPF_JIT=y

CONFIG_BPF_JIT_ALWAYS_ON=y

CONFIG_BPF_JIT_DEFAULT_ON=y

CONFIG_BPF_UNPRIV_DEFAULT_OFF=y

# CONFIG_BPF_PRELOAD is not set

# CONFIG_BPF_LSM is not set

# end of BPF subsystem

CONFIG_CGROUP_BPF=y

CONFIG_IPV6_SEG6_BPF=y

CONFIG_NETFILTER_XT_MATCH_BPF=m

CONFIG_BPFILTER=y

CONFIG_BPFILTER_UMH=m

CONFIG_NET_CLS_BPF=m

CONFIG_NET_ACT_BPF=m

CONFIG_BPF_STREAM_PARSER=y

CONFIG_LWTUNNEL_BPF=y

CONFIG_BPF_EVENTS=y

CONFIG_BPF_KPROBE_OVERRIDE=y

CONFIG_TEST_BPF=m

===========================================

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.? Stop.

make[1]: *** No rule to make target 'debian/canonical-revoked-certs.pem', needed by 'certs/x509_revocation_list'.? Stop.

=================

alpha@mascot ~/Workspace/linux/linux-next $ grep 'debian/canonical-certs.pem' .config

CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"

alpha@mascot ~/Workspace/linux/linux-next $ ./scripts/config -d CONFIG_SYSTEM_TRUSTED_KEYS

alpha@mascot ~/Workspace/linux/linux-next $ grep 'debian/canonical-certs.pem' .config

alpha@mascot ~/Workspace/linux/linux-next $ grep 'debian/canonical-revoked-certs.pem' .config

CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

alpha@mascot ~/Workspace/linux/linux-next $ ./scripts/config -d CONFIG_SYSTEM_REVOCATION_KEYS

alpha@mascot ~/Workspace/linux/linux-next $ grep 'debian/canonical-revoked-certs.pem' .config

=====================================================

=====================================================

? CC? samples/bpf/xdp_rxq_info_user.o

skeleton/pid_iter.bpf.c:35:10: error: incomplete definition of type 'struct bpf_link'

? ? ? ? ? ? ? ? return BPF_CORE_READ((struct bpf_link *)ent, id);

? ? ? ? ? ? ? ? ? ? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:403:2: note: expanded from macro 'BPF_CORE_READ'

? ? ? ? ___type((src), a, ##__VA_ARGS__) __r;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\

? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:274:29: note: expanded from macro '___type'

#define ___type(...) typeof(___arrow(__VA_ARGS__))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ^~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:272:23: note: expanded from macro '___arrow'

#define ___arrow(...) ___apply(___arrow, ___narg(__VA_ARGS__))(__VA_ARGS__)

? ? ? ? ? ? ? ? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:223:25: note: expanded from macro '___concat'

#define ___concat(a, b) a ## b

? ? ? ? ? ? ? ? ? ? ? ? ^

<scratch space>:16:1: note: expanded from here

___arrow2

^

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:263:26: note: expanded from macro '___arrow2'

#define ___arrow2(a, b) a->b

? ? ? ? ? ? ? ? ? ? ? ? ~^

skeleton/pid_iter.bpf.c:35:32: note: forward declaration of 'struct bpf_link'

? ? ? ? ? ? ? ? return BPF_CORE_READ((struct bpf_link *)ent, id);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^

skeleton/pid_iter.bpf.c:35:10: error: incomplete definition of type 'struct bpf_link'

? ? ? ? ? ? ? ? return BPF_CORE_READ((struct bpf_link *)ent, id);

? ? ? ? ? ? ? ? ? ? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:404:2: note: expanded from macro 'BPF_CORE_READ'

? ? ? ? BPF_CORE_READ_INTO(&__r, (src), a, ##__VA_ARGS__);? ? ? ? ? ? ? ? ? \

? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:311:2: note: expanded from macro 'BPF_CORE_READ_INTO'

? ? ? ? ___core_read(bpf_core_read, bpf_core_read,? ? ? ? ? ? ? ? ? ? ? ? ? \

? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:302:2: note: expanded from macro '___core_read'

? ? ? ? ___apply(___core_read, ___empty(__VA_ARGS__))(fn, fn_ptr, dst,? ? ? \

? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:296:2: note: expanded from macro '___core_read0'

? ? ? ? ___read(fn, dst, ___type(src), src, a);

? ? ? ? ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:277:59: note: expanded from macro '___read'

? ? ? ? read_fn((void *)(dst), sizeof(*(dst)), &((src_type)(src))->accessor)

? ? ? ? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:206:79: note: expanded from macro 'bpf_core_read'

? ? ? ? bpf_probe_read_kernel(dst, sz, (const void *)__builtin_preserve_access_index(src))

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^~~

skeleton/pid_iter.bpf.c:35:32: note: forward declaration of 'struct bpf_link'

? ? ? ? ? ? ? ? return BPF_CORE_READ((struct bpf_link *)ent, id);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^

skeleton/pid_iter.bpf.c:35:10: error: returning 'void' from a function with incompatible result type '__u32' (aka 'unsigned int')

? ? ? ? ? ? ? ? return BPF_CORE_READ((struct bpf_link *)ent, id);

? ? ? ? ? ? ? ? ? ? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

/home/alpha/Workspace/linux/linux-next/samples/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_core_read.h:402:36: note: expanded from macro 'BPF_CORE_READ'

#define BPF_CORE_READ(src, a, ...) ({? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

skeleton/pid_iter.bpf.c:42:17: warning: declaration of 'struct bpf_iter__task_file' will not be visible outside of this function [-Wvisibility]

int iter(struct bpf_iter__task_file *ctx)

? ? ? ? ? ? ? ? ^

skeleton/pid_iter.bpf.c:44:25: error: incomplete definition of type 'struct bpf_iter__task_file'

? ? ? ? struct file *file = ctx->file;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ~~~^

skeleton/pid_iter.bpf.c:42:17: note: forward declaration of 'struct bpf_iter__task_file'

int iter(struct bpf_iter__task_file *ctx)

? ? ? ? ? ? ? ? ^

skeleton/pid_iter.bpf.c:45:32: error: incomplete definition of type 'struct bpf_iter__task_file'

? ? ? ? struct task_struct *task = ctx->task;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?~~~^

skeleton/pid_iter.bpf.c:42:17: note: forward declaration of 'struct bpf_iter__task_file'

int iter(struct bpf_iter__task_file *ctx)

? ? ? ? ? ? ? ? ^

skeleton/pid_iter.bpf.c:76:19: error: incomplete definition of type 'struct bpf_iter__task_file'

? ? ? ? bpf_seq_write(ctx->meta->seq, &e, sizeof(e));

? ? ? ? ? ? ? ? ? ? ? ~~~^

skeleton/pid_iter.bpf.c:42:17: note: forward declaration of 'struct bpf_iter__task_file'

int iter(struct bpf_iter__task_file *ctx)

========================

这种错误,尝试执行命令:

make -C samples/bpf/ clean

make -C tools/ clean

make bzImage

make headers_install

make M=samples/bpf/ LLC=llc-12 CLANG=clang-12

============================================================

============================================================

Error: failed to load BTF from /home/alpha/Workspace/linux/mainline/linux/vmlinux: Unknown error -2

# CONFIG_DEBUG_INFO_BTF is not set

=================

要打开CONFIG_DEBUG_INFO_BTF:

/scripts/config -e CONFIG_DEBUG_INFO_BTF

============================================================

=======================================

libbpf: failed to find BTF info for global/extern symbol 'tx_mac_addr'

Error: failed to link 'samples/bpf/xdp_redirect_cpu.bpf.o': Unknown error -2 (-2)

make[1]: *** [samples/bpf/Makefile:429: samples/bpf/xdp_redirect_cpu.skel.h] Error 254

=================

这种错误是llc和clang版本不对,要高于10.x.x版本:?

make M=samples/bpf/ LLC=llc-12 CLANG=clang-12

===============================================

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:30:38  更:2022-09-24 21:31:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 18:25:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计