在尝试构建支持 Ftrace 和调试信息的内核(4.15)时,我收到以下错误:
FAILED: load BTF from vmlinux: No such file or directory
Makefile:1160: recipe for target 'vmlinux' failed
这就是我正在尝试的:
$ ./scripts/config -e CONFIG_FTRACE
$ ./scripts/config -e CONFIG_DEBUG_INFO
$ ./scripts/config -e CONFIG_DEBUG_INFO_DWARF5
$ ./scripts/config -e CONFIG_BPF_SYSCALL
$ ./scripts/config -e CONFIG_DEBUG_INFO_BTF
$ ./scripts/config -d CONFIG_DEBUG_INFO_REDUCED
$ yes "" | make oldconfig
$ make -j$(nproc) Image dtbs modules
这个问题似乎与这个问题不同:
编译 kernel-5.9.1 时,“失败:从 vmlinux 加载 BTF:未知错误 -2make:*** [Makefile:1162:vmlinux] 错误 255”
答案1
我不知道你为什么要在 2022 年安装内核 4.15,但除此之外你不应该运行yes "" | make oldconfig
.这将为新问题选择“是”。您可能想要的是make olddefconfig
为新问题选择默认值(这不一定是“是”)。这可能是您问题的一部分。
您还应该确保安装了 dwarves。
答案2
看来错误的实际原因可能就在错误的上面十几行左右load BTF from vmlinux: No such file or directory
。
就我而言,这是一个警告(是的,这是一个警告,因为它不会中断构建):
[…]
BTF .btf.vmlinux.bin.o
btf_encoder__encode: btf__dedup failed!
Failed to encode BTF
[…]
...这个问题是早期开发阶段的回归,我通过禁用CONFIG_X86_KERNEL_IBT
.