用途:面向 ebpf-for-windows 项目,把 eBPF C 源码编译为 ELF 字节码,并用 bpf2c 验证(可选生成原生代码)。适用场景包括:将 .c 编译为 .o、验证 .o 是否通过验证器、调试 bpf2c 输出的验证失败,以及涉及 bpf2c、clang+bpf 或 PREVAIL 验证的任务。
前置条件:需要 clang.exe,按优先级查找 packages\llvm.tools\clang.exe、$env:ProgramFiles\LLVM\bin\clang.exe,以及通过 vswhere 定位的 Visual Studio Llvm\bin\clang.exe。bpf2c.exe 若缺失,可用 msbuild ebpf-for-windows.sln /m /p:Configuration=Debug /p:Platform=x64 /t:tools\bpf2c 构建。
主要能力:编译阶段在解决方案根目录运行 clang,使用 -g -target bpf -O2 -Werror 及相应 -I 包含路径;undocked 程序需额外添加 -Itests\sample 与 -Iundocked\tests\sample\ext\inc。验证阶段运行 bpf2c.exe --bpf <FILE>.o --sys <OUTPUT_DIR><name>_driver.c,可用 --dll 生成 DLL 包装、--raw 生成无平台包装的 C 代码、--verbose 输出详细验证器信息、--type 覆盖程序类型、--hash 指定哈希算法。
使用方式:先确定源文件与输出位置,按样例或用户文件选择包含路径;编译失败则修复 C 源码错误;bpf2c 成功即验证通过,失败则加 --verbose 并阅读 external/ebpf-verifier/docs/llm-context.md 中的 PREVAIL 诊断协议定位根因。
限制:资料未提供收费、平台支持范围、性能数据或额外功能说明;具体命令与路径需按实际环境调整。