所以我有llvm,内核头(5.14.1),clang,还有libbpf,以及我从linux源代码在ebpf程序目录中复制的bpf_helpers.h。这是一个简单的程序,我喜欢在从任何程序调用execve系统时加载并运行它。
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include "bpf_helpers.h" // some helpers not found, why is that?
#define SEC(NAME) __attribute__((section(NAME), used))
SEC("kprobe/execve")
int bpf_prog1(struct pt_regs *ctx)
{
char m[]="hello world";
bpf_trace_printk(m,sizeof(m));
return 0;
}
char _license[] SEC("license") = "GPL"; 一个简单的程序,
我用clang编译了程序,但是当我做llvm-objdump -S ./one.o时,它给出的信息是无法识别的格式,
因此,如果我的llvm不理解我的.o文件,我想知道这意味着什么。我可以忽略这个llvm objdum的警告,然后继续使用ebpf加载程序加载.o文件,或者我创建.o文件并使用clang编译的方式是错误的,因此在这种情况下,有人可以告诉我们如何从ebpf .c文件创建ebpf程序并使用加载程序加载它。
发布于 2021-12-16 10:02:03
如果您在Ubuntu上运行并安装了libbpf-dev,您应该能够包括如下所示的libbpf头:
#include <bpf/bpf_helpers.h>和(在加载程序中):
#include <bpf/libbpf.h>至于llvm-objdump的抱怨,它可能取决于您用于编译的命令。你通过-t bpf目标了吗?你到底用了什么命令?
https://stackoverflow.com/questions/70360293
复制相似问题