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


8

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

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

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


そのPIEはあなたの問題とは何の関係もありません。どの正確なディストリビューションとパッケージバージョンを使用していますか?makeおよびgccのバージョンは何ですか?どのアーキテクチャで?
Gilles「SO-悪をやめなさい」

uname -a私に与えLinux hostname 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux 、gccバージョンはgcc (Debian 6.2.0-9) 6.2.0 20161019です。私はそれらの正確な指示に従いました。
user123456

回答:


7

http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8-rc2/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チケット:

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


このパッチをどのように適用しますか?:同じエラーを与えるインテルのe1000eドライバ、コンパイルについても、私の関連の質問を参照してくださいaskubuntu.com/questions/851721/...
AmedeeヴァンGasseを

/usr/src/linux-headers-4.8.0-27/arch/x86$ cat〜/ e1000e-3.3.4 / disable-pie.patch | sudoパッチ-p1パッチファイルMakefileパッチ:**** 7行目の不正なパッチ:すべて:vmlinux
Amedee Van Gasse

上に示したパッチの場合、これはlinuxディレクトリのMakefileに適用されることを意図しています。たとえば、cdn.kernel.org / pub / linux / kernel / v4.x / linux-4.8.15.tar.xzをダウンロードしてソースを展開した後、linux-4.8.15に変更すると、Makefileが表示されます。そこ。上記のパッチはそのMakefileに適用されるか、手動でファイルを編集します(変更を適用するにはsedを使用します)。別のメモ:フラグはgcc6では必要ですが、gcc5では必要ありません。
レイモンドバークホルダー2017年

私はカーネルビルドに以下を使用します: github.com/rburkholder/vagrant/blob/master/bldkrnlpkg/…on debian / stretch
Raymond Burkholder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.