![리눅스 커널 컴파일 오류](https://linux55.com/image/192712/%EB%A6%AC%EB%88%85%EC%8A%A4%20%EC%BB%A4%EB%84%90%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%20%EC%98%A4%EB%A5%98.png)
오류가 발생합니다.
make ${BUILD_FLAGS} -j1 modules
HOSTCC scripts/basic/fixdep
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
CHK include/generated/compile.h
LD [M] arch/x86/crypto/crc32c-intel.ko
arch/x86/crypto/crc32c-intel.lto.o: warning: objtool: file already has __mcount_loc section, skipping
arch/x86/crypto/crc32c-intel.lto.o: warning: objtool: file already has .orc_unwind section, skipping
make[2]: *** [scripts/Makefile.modfinal:78: arch/x86/crypto/crc32c-intel.ko] Error 255
make[1]: *** [scripts/Makefile.modpost:156: __modpost] Error 2
make: *** [Makefile:1762: modules] Error 2
나는 그것을 사용하고 있다uname -a
Linux 4.19.0-17-amd64 #1 SMP Debian 4.19.194-1 (2021-06-10) x86_64 GNU/Linux
echo $BUILD_FLAGS
LLVM=1 LLVM_IAS=1 CC=clang-12 CXX=clang++-12 LD=ld.lld-12
AR=llvm-ar-12 NM=llvm-nm-12 STRIP=llvm-strip-12
READELF=llvm-readelf-12 HOSTCC=clang-12 HOSTCXX=clang++-12
HOSTAR=llvm-ar-12 HOSTLD=ld.lld-12 OBJCOPY=llvm-objcopy-12
OBJDUMP=objdump
Linux 커널 빌드 5.13.1
같은 상황에 처한 사람이 있습니까? Clang-12를 통해 LTO 최적화로 커널을 구축해 보세요.
답변1
실행 make
(또는 make all
)은 기본적으로 이미 실행되어 있습니다 make modules
. 따라서 make modules
모듈을 빌드하고 다시 실행하면 이 메시지가 표시됩니다. 이 시점에서는 make modules_install
정상적으로 작동하는 커널과 모듈이 있을 것입니다 make install
.
$ make help | grep "*"
all - Build all targets marked with [*]
* vmlinux - Build the bare kernel
* modules - Build all modules
make SPHINX_CONF={conf-file} [target] use *additional* sphinx-build
* bzImage - Compressed kernel image (arch/x86/boot/bzImage)
bzdisk/fdimage*/isoimage also accept:
Execute "make" or "make all" to build all targets marked with [*]
이 문제를 보다 적절하게 처리하기 위해 Makefile을 정리할 수 있는 기회가 있습니다. 이건 회귀일 수도 있어https://github.com/ClangBuiltLinux/linux/issues/1369#issuecomment-832307198make
, 이전에 initramfs가 통합된 clang 커널을 빌드할 때 5.12에서 경고/오류를 발견하지 못했습니다( 생성된 initramfs cpio를 bzImage에 효과적으로 병합하려면 두 번 호출해야 합니다 . 따라서 initramfs cpio를 직접 실행 make vmlinux
하고 병합하고 건너뛸 수 있습니다). make bzImage
추가 make modules
단계).