Я пытался скомпилировать последнее ядро Linux v4.8.9 на Ubuntu 16.10, и эта ошибка продолжает появляться после того, как я сделал .config по умолчанию, изменил его с помощью menuconfig и запустил make самостоятельно. Я также запустил make mrproper, как только разархивировал файл. Это вывод сразу после запуска make:
scripts/kconfig/conf --silentoldconfig Kconfig
SYSTBL arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/asm/unistd_32_ia32.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/asm/unistd_64_x32.h
SYSTBL arch/x86/entry/syscalls/../../include/generated/asm/syscalls_64.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_64.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_x32.h
HOSTCC arch/x86/tools/relocs_32.o
HOSTCC arch/x86/tools/relocs_64.o
HOSTCC arch/x86/tools/relocs_common.o
HOSTLD arch/x86/tools/relocs
CHK include/config/kernel.release
UPD include/config/kernel.release
WRAP arch/x86/include/generated/asm/clkdev.h
WRAP arch/x86/include/generated/asm/cputime.h
WRAP arch/x86/include/generated/asm/dma-contiguous.h
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mm-arch-hooks.h
CHK include/generated/uapi/linux/version.h
UPD include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
CC kernel/bounds.s
kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
/*
Kbuild:45: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 1
Makefile:1015: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
Я также попытался скомпилировать с параметром -no-pie после команды make, но он отображает множество новых ошибок, постоянно сообщая, что существуют «отсутствующие цели». У меня есть версия gcc 6.2.0. У меня также установлен gcc-5, потому что я предположил, что в начале это может быть потому, что gcc был слишком новым, но та же проблема сохраняется в gcc-5. Кто-то из списков рассылки или другого форума упомянул, что проблема была решена путем прямого клонирования из git, но это также не помогло в моем сценарии.
Мне любопытно, сталкивался ли кто-нибудь еще с этой проблемой, и если так, то какое возможное решение могло бы быть?
ПРИМЕЧАНИЕ: я запускаю Ubuntu в Virtualbox на Mac, если это может быть источником проблем.
Откройте Makefile, найдите CFLAGS_EXTRA и добавьте в него следующую опцию
-fno-pie
У меня была строка:
Я изменил это для:
Для построения ядра 4, выше флаг:
KBUILD_CFLAGS
.И он снова начал компилироваться.
источник