Ядро не поддерживает режим PIC для компиляции?

Я пытался скомпилировать последнее ядро Linux v4.8.9 на Ubuntu 16.10, и эта ошибка продолжает открываться после того, как я сделал значение по умолчанию .config, изменил его с menuconfig и работал, делают отдельно. Я также работал, делают mrproper как только я непросмоленный файл. Это - вывод прямо после того, как я работаю, сделайте:

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

Я также попытался компилировать с - опция без кругов после сделать команды, но она представляет ряд новых ошибок, постоянно говоря, что там "пропускают цели". У меня есть gcc версия 6.2.0. У меня также есть gcc-5, установленный, потому что я принял в начале, которым это могло бы быть, потому что gcc был слишком новым, но та же проблема сохраняется в gcc-5. Кто-то в списках рассылки или другом форуме упомянул, что проблема была разрешена путем прямого клонирования от мерзавца, но это не помогло в моем сценарии также.

Мне любопытно, если кто-либо еще столкнулся с этой проблемой и если так, какая возможная фиксация могла бы быть?

Примечание: Я запускаю Ubuntu в Virtualbox на Mac, если это могло бы быть возможным источником проблем.

12
задан 20 November 2016 в 09:57

2 ответа

Проблема с Вашей gcc установкой в gcc 6 +, КРУГ версий (положение независимые исполняемые файлы) включен по умолчанию. Таким образом, для компиляции Вас, должен отключить его. Даже gcc 5 имеет проблему. Это - известная ошибка для gcc. Ссылка Ошибки .

До сих пор с gcc стороны нет никакого официального патча, таким образом, обходное решение должно исправить Make-файл источника ядра.

, Если Вы знакомы с исправлением исходного файла, используют коды из этой ссылки для создания файла исправления, затем пытаются скомпилировать. Файл исправления

Сообщенный мне, если Вы испытываете затруднения при установке патча.

12
ответ дан 23 November 2019 в 03:35

Откройте Makefile, ищите CFLAGS_EXTRA и добавьте следующую опцию к нему -fno-pie

У меня была строка:

EXTRA_CFLAGS += $(CFLAGS_EXTRA)

Я изменил его для:

EXTRA_CFLAGS += $(CFLAGS_EXTRA) -fno-pie

Для создания ядра 4, выше флага: KBUILD_CFLAGS.

И это начало компилировать снова.

7
ответ дан 23 November 2019 в 03:35

Другие вопросы по тегам:

Похожие вопросы: