经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 网络安全 » 查看文章
Cilium/eBPF令人无语的加载机制记录
来源:cnblogs  作者:SenberHu  时间:2021/12/31 8:56:26  对本文有异议

前段时间编译bpf c文件,都是用的bpf2go这个go包,这个包虽然很方便,但是指定参数比较困难,

学习到tracee falco这种大型项目都是通过makefile直接编译bpf代码,因此打算自己写Makefile

  1. clang -D__KERNEL__ -D__ASM_SYSREG_H -D__BPF_TRACING__ -Wunused -Wall -Wno-frame-address -Wno-unused-value -Wno-unknown-warning-option -Wno-pragma-once-outside-header -Wno-pointer-sign -Wno-gnu-variable-sized-type-not-at-end -Wno-deprecated-declarations -Wno-compare-distinct-pointer-types -Wno-address-of-packed-member -fno-stack-protector -fno-jump-tables -fno-unwind-tables -fno-asynchronous-unwind-tables -xc -nostdinc -I $(LIBBPF_HEADERS) -include $(KERN_SRC_PATH)/include/linux/kconfig.h -I$(BPF_HEADERS) -I$(KERN_SRC_PATH)/include -I$(KERN_SRC_PATH)/include/uapi -I$(KERN_SRC_PATH)/include/generated -I$(KERN_SRC_PATH)/include/generated/uapi -I$(KERN_SRC_PATH)/arch/$(linux_arch)/include -I$(KERN_SRC_PATH)/arch/$(linux_arch)/include/uapi -I$(KERN_SRC_PATH)/arch/$(linux_arch)/include/generated -I$(KERN_SRC_PATH)/arch/$(linux_arch)/include/generated/uapi -O2 -emit-llvm $(BPF_SRC) -c -o - | llc -march=bpf -filetype=obj -o $(OUT_BPF)

Makefile写起来很简单,生产.o文件也很easy,但是当用cilium/ebpf加载生成的.o文件时,却报错

  1. loading objects: %v can't load DemoInfo: load BTF maps: missing BTF
  2. 2021/12/24 16:35:05 link func: prog cannot be nil: invalid input

什么情况,我没有用BTF啊,为啥会报这个错误。

于是开始调试bpf2go包,在仔细对比他的编译参数的时候,终于发现了区别
在这里插入图片描述

也就是说生成的.o带调试信息即可,也就是加上-g参数,坑啊,就不能提示的清晰一些吗???

于是给Makefile中加入 -g参数,解决了问题,耗时2天,特此记录。

本文由博客一文多发平台 OpenWrite 发布!

原文链接:http://www.cnblogs.com/senberhu/p/15736480.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号