web-dev-qa-db-ja.com

カーネルをコンパイルできません:エラー、カーネルはPICモードをサポートしていません

カーネルの再コンパイルに問題があります。ソースパッケージをダウンロードし、解凍して実行する

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で取得したカーネル構成を変更することで解決できる場合があります。

このエラーを解消してコンパイルを成功させる方法

8
user123456

から http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8-rc2/0002-0002-UBUNTU-SAUCE-no-up-disable-pie-when-gcc-has-it- enabl.patch

あなたは次のパッチを試すかもしれません:

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 :=

いくつかの関連するdebianチケット:

そして他のパラフェニリア:

7