bpf - 使用 uBPF 打印 Hello World?
问题描述
我最近在搞乱 uBPF,并注意到我似乎无法在 uBPF 中实现任何打印功能。我尝试将我的代码直接添加到 VM 文件夹中的 test.c,但将其作为注册函数,但我留下了重定位错误,让我没有解决方案。我已经看到了 OKO 的实现,但这似乎也不能解决我的问题。
这是我的注册代码:
static void
register_functions(struct ubpf_vm *vm)
{
ubpf_register(vm, 0, "gather_bytes", gather_bytes);
ubpf_register(vm, 1, "memfrob", memfrob);
ubpf_register(vm, 2, "trash_registers", trash_registers);
ubpf_register(vm, 3, "ubpf_printf", ubpf_printf);
}
这是打印功能本身:
static void
ubpf_printf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
char str[MAX_PRINTF_LENGTH];
if (vsnprintf(str, MAX_PRINTF_LENGTH, fmt, args) >= 0)
VLOG_ERR("%s", str);
va_end(args);
}
我的问题是如何实现可以打印任何我想要的打印功能?
编辑:在 test.c 中实现我的测试功能后,添加错误本身。vlog.h 文件在那里,但我似乎仍然得到错误。
make -C vm
make: Entering directory '/home/pi/Desktop/ubpfModified/vm'
cc -Wall -Werror -Iinc -O2 -g -Wunused-parameter -c -o test.o test.c
test.c:32:10: fatal error: /home/pi/Desktop/ubpf/vm/vlog.h: No such file or directory
32 | #include "/home/pi/Desktop/ubpf/vm/vlog.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [<builtin>: test.o] Error 1
make: Leaving directory '/home/pi/Desktop/ubpfModified/vm'
解决方案
错误消息告诉你你需要的一切。这与您的实现无关,而是与您尝试包含但编译器找不到的标头有关。
VLOG_ERR()
您显然已经从 Oko 复制了一些代码,例如,似乎在oko/include/openvswitch/vlog.h
. 您可能添加了一个#include "vlog.h"
,但没有将相关文件添加到您的存储库中?
推荐阅读
- python - Django ModuleNotFoundError:从 docker 启动时没有名为“architect”的模块
- c++ - Vcpkg Pango CMake 构建失败缺少头文件
- java - 无法在 Eclipse 中初始化类 com.genuitec.eclipse.code.webicons.WebIcon
- java - 新手将过程编程重构为 OOP HASHING 函数
- jupyter-notebook - 有没有办法在 Jupyter 笔记本中安装软件包,而不必每次打开笔记本时都重新加载它们?
- sql-server - docker inspect --format '{{.NetworkSettings.Networks.nat.IPAddress}}' sql1 返回'
' - sapper - 单击按钮后获取道具值的苗条方式-在父组件中并传递给子组件
- google-cloud-platform - 无法使用自定义内存指标自动缩放 GCP 实例
- android - 与 Android 设备中的像素密度混淆
- python - 访问列表 Python 中的特定字符串以在不同的列中分隔