Cannot compile kernel: error, kernel does not support PIC mode

18,818

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

You might try the following 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 :=

A couple of related Debian tickets:

And a related GCC report:

Share:
18,818

Related videos on Youtube

user123456
Author by

user123456

Updated on September 18, 2022

Comments

  • user123456
    user123456 over 1 year

    I have troubles recompiling my Kernel. Downloading the source package, decompress it and running

    fakeroot make-kpkg kernel_image  
    

    leads me to the error

                   [...]
    
      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
    

    The issue may be solved by changing the Kernel configuration obtained with make menuconfig.

    How to get rid of this error and have successful compilation

    • Gilles 'SO- stop being evil'
      Gilles 'SO- stop being evil' over 7 years
      That PIE has nothing to do with your problem. What exact distribution and package versions are you using? What version of make and gcc? On what architecture?
    • user123456
      user123456 over 7 years
      uname -a gives me Linux hostname 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux and gcc version is gcc (Debian 6.2.0-9) 6.2.0 20161019. I have followed those precise indications .
  • Amedee Van Gasse
    Amedee Van Gasse over 7 years
    How does one apply this patch? See also my related question about compiling the Intel e1000e driver, which gives the same error: askubuntu.com/questions/851721/…
  • Amedee Van Gasse
    Amedee Van Gasse over 7 years
    /usr/src/linux-headers-4.8.0-27/arch/x86$ cat ~/e1000e-3.3.4/disable-pie.patch | sudo patch -p1 patching file Makefile patch: **** malformed patch at line 7: all: vmlinux
  • Raymond Burkholder
    Raymond Burkholder over 7 years
    For the patch I show above, this is meant to be applied to the Makefile in the linux directory. For example, after downloading cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.15.tar.xz, and expanding the source, change into linux-4.8.15, and there should be a Makefile there. The patch above is applied to that Makefile, or just manually edit the file (I use sed to apply the change). Another note: the flags are needed with gcc6 but not with gcc5.
  • Raymond Burkholder
    Raymond Burkholder over 7 years
    I use the following for my kernel builds: github.com/rburkholder/vagrant/blob/master/bldkrnlpkg/… on debian/stretch