linux-5.14.2.tar.gz
방금 컴파일할 때 다음과 같은 오류가 발생했습니다.patch-5.14.2-rt21.patch
on CONFIG_DEBUG_INFO_BTF=y:
AS arch/x86/lib/iomap_copy_64.o
arch/x86/lib/iomap_copy_64.S: Assembler messages:
arch/x86/lib/iomap_copy_64.S:13: 警告:found `movsd'; assuming `movsl' was meant
AR arch/x86/lib/built-in.a
GEN .version
CHK include/generated/compile.h
LD vmlinux.o
ld: warning: arch/x86/power/hibernate_asm_64.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
MODPOST vmlinux.symvers
MODINFO modules.builtin.modinfo
GEN modules.builtin
LD .tmp_vmlinux.btf
ld: warning: arch/x86/power/hibernate_asm_64.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: .tmp_vmlinux.btf has a LOAD segment with RWX permissions
BTF .btf.vmlinux.bin.o
LD .tmp_vmlinux.kallsyms1
ld: warning: .btf.vmlinux.bin.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: .tmp_vmlinux.kallsyms1 has a LOAD segment with RWX permissions
KSYMS .tmp_vmlinux.kallsyms1.S
AS .tmp_vmlinux.kallsyms1.S
LD .tmp_vmlinux.kallsyms2
ld: warning: .btf.vmlinux.bin.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: .tmp_vmlinux.kallsyms2 has a LOAD segment with RWX permissions
KSYMS .tmp_vmlinux.kallsyms2.S
AS .tmp_vmlinux.kallsyms2.S
LD vmlinux
ld: warning: .btf.vmlinux.bin.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
ld: warning: vmlinux has a LOAD segment with RWX permissions
BTFIDS vmlinux
failed: load btf from vmlinux: invalid argument make:
make: *** [Makefile:1176: vmlinux] Error 255
make: *** Deleting file 'vmlinux'
CONFIG_DEBUG_INFO_BTF
로 설정 하면 컴파일 시 오류가 보고되지 않는다는 것을 알고 있지만 로 설정 n
하고 싶지는 않습니다 .CONFIG_DEBUG_INFO_BTF
n
~에서이 문제, 가상 메모리가 너무 작은 것 같은데, 이 문제의 시작자는 가상 머신을 사용하고 있으며 저는 물리적 머신 Debian12입니다. 어떻게 해야 합니까?
~/kernel/5.14.2/linux-5.14.2$ free -h
total used free shared buff/cache available
内存: 7.7Gi 508Mi 3.4Gi 1.2Mi 4.1Gi 7.2Gi
交换: 976Mi 0B 976Mi
답변1
pahole
이는 1.24 이상 및 "이전" 커널 버전을 사용하고 있기 때문일 수 있습니다 . 바라보다https://lore.kernel.org/bpf/Ywkq61Lhyf11SsSa@krava/T/#m008baf5c6d4f252dc74cefcd4105295cf08bfd52
즉, pahole
시스템의 최신 버전은 생성된 BTF 정보를 사용 BTF_KIND_ENUM64
하지만 libbpf
이전 커널 버전에서 사용된 버전은 이 BTF 유형을 지원하지 않습니다.
pahole
버전 1.23으로 다운그레이드 하거나 pahole
빌드에서 호출되는 위치를 찾아 --skip_encoding_btf_enum64
플래그를 전달할 수 있습니다.
나중에 유사한 오류가 발생하는 경우 pr_debug
도구 호출 시 유용한 정보가 보고되며 resolve_btfids
실제로 인쇄되도록 로그 수준을 높이면 문제를 파악하는 데 도움이 된다는 점을 참고하세요.
소스에서 빌드하여 다운그레이드하려는 경우 저장소는 다음과 같습니다.https://git.kernel.org/pub/scm/devel/pahole/pahole.git/
답변2
커널 버전을 변경하여 이 문제를 해결했습니다.
리눅스-6.4.tar.gz그리고패치-6.4.6-rt8.patch.