首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ubuntu clang和llvm中编译扩展的berkley包过滤器程序,并安装了libbpf,还安装了bt助手函数,找不到& formar错误

在ubuntu clang和llvm中编译扩展的berkley包过滤器程序,并安装了libbpf,还安装了bt助手函数,找不到& formar错误
EN

Stack Overflow用户
提问于 2021-12-15 08:11:30
回答 1查看 271关注 0票数 -1

所以我有llvm,内核头(5.14.1),clang,还有libbpf,以及我从linux源代码在ebpf程序目录中复制的bpf_helpers.h。这是一个简单的程序,我喜欢在从任何程序调用execve系统时加载并运行它。

代码语言:javascript
复制
#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程序并使用加载程序加载它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 10:02:03

如果您在Ubuntu上运行并安装了libbpf-dev,您应该能够包括如下所示的libbpf头:

代码语言:javascript
复制
#include <bpf/bpf_helpers.h>

和(在加载程序中):

代码语言:javascript
复制
#include <bpf/libbpf.h>

至于llvm-objdump的抱怨,它可能取决于您用于编译的命令。你通过-t bpf目标了吗?你到底用了什么命令?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70360293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档