所以我有 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從 ebpf .c 檔案中撰寫程式并使用加載程式加載它。
uj5u.com熱心網友回復:
如果您在 Ubuntu 上運行并安裝了libbpf-dev,您應該能夠包含這樣的 libbpf 標頭:
#include <bpf/bpf_helpers.h>
和(在加載程式中):
#include <bpf/libbpf.h>
至于llvm-objdump抱怨,這可能取決于您用來編譯的命令。你通過-t bpf目標了嗎?你具體使用什么命令?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382640.html
