![커널을 컴파일할 수 없습니다: 오류, 커널은 PIC 모드를 지원하지 않습니다.](https://linux55.com/image/97533/%EC%BB%A4%EB%84%90%EC%9D%84%20%EC%BB%B4%ED%8C%8C%EC%9D%BC%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%3A%20%EC%98%A4%EB%A5%98%2C%20%EC%BB%A4%EB%84%90%EC%9D%80%20PIC%20%EB%AA%A8%EB%93%9C%EB%A5%BC%20%EC%A7%80%EC%9B%90%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
커널을 다시 컴파일하는 데 문제가 있습니다. 소스 코드 패키지를 다운로드하고 압축을 풀고 실행하세요.
fakeroot make-kpkg kernel_image
내가 실수를 하게 만들었어
[...]
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
CHK include/generated/package.h
UPD include/generated/package.h
CC kernel/bounds.s
kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
를 사용하여 얻은 커널 구성을 변경하면 문제가 해결될 수 있습니다 make menuconfig
.
이 오류를 제거하고 성공적으로 컴파일하는 방법
답변1
다음 패치를 시도해 볼 수 있습니다.
diff --git a/Makefile b/Makefile
index 5c18baa..e342473 100644
--- a/Makefile
+++ b/Makefile
@@ -612,6 +612,12 @@ endif # $(dot-config)
# Defaults to vmlinux, but the arch makefile usually adds further targets
all: vmlinux
+# force no-pie for distro compilers that enable pie by default
+KBUILD_CFLAGS += $(call cc-option, -fno-pie)
+KBUILD_CFLAGS += $(call cc-option, -no-pie)
+KBUILD_AFLAGS += $(call cc-option, -fno-pie)
+KBUILD_CPPFLAGS += $(call cc-option, -fno-pie)
+
# The arch Makefile can set ARCH_{CPP,A,C}FLAGS to override the default
# values of the respective KBUILD_* variables
ARCH_CPPFLAGS :=
관련 데비안 티켓:
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835148
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=841420
관련 GCC 보고서는 다음과 같습니다.