«фатальная ошибка: linux/compiler-gcc5.h: нет такого файла или каталога» во время битбейка

Я пытаюсь запустить bitbake по рецепту с пользовательским источником, отличным от yocto. Использование источника linux-yocto работает нормально, но когда я пытаюсь использовать скелетный файл linux-yocto-custom, предоставленный файлами проекта yocto, я сталкиваюсь с проблемами.

Моя файловая структура выглядит примерно так:

meta-test
|
.
.
.
+--recipes-kernel/
   |
   +--linux/
       |
       +--linux-yocto-custom_3.16.bb
       +--linux-yocto-custom/
          |
          +--defconfig

Вот мой модифицированный файл скелета (linux-yocto-custom_3.16.bb):

inherit kernel
require recipes-kernel/linux/linux-yocto.inc
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git;protocol=git;nocheckout=1;name=machine"
SRC_URI += "file://defconfig"
LINUX_VERSION ?= "3.16"
LINUX_VERSION_EXTENSION_append = "-custom"
SRCREV_test="19583ca584d6f574384e17fe7613dfaeadcdc4a6"
PV = "${LINUX_VERSION}+git${SRCPV}"
COMPATIBLE_MACHINE = "test"

Вот журнал ошибок:

DEBUG: Executing shell function do_compile
NOTE: make -j 4 bzImage CC=i586-poky-linux-gcc  -fuse-ld=bfd LD=i586-poky-linux-ld.bfd 
make[1]: Entering directory `/home/me/poky/build/tmp/work/test-poky-linux/linux-yocto-custom/3.16+gitAUTOINC+19583ca584-r0/linux-test-standard-build'
  GEN     ./Makefile
scripts/kconfig/conf --silentoldconfig Kconfig
  SYSTBL  arch/x86/syscalls/../include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h
  CHK     include/config/kernel.release
  SYSHDR  arch/x86/syscalls/../include/generated/uapi/asm/unistd_64.h
  UPD     include/config/kernel.release
  SYSHDR  arch/x86/syscalls/../include/generated/uapi/asm/unistd_x32.h
  GEN     ./Makefile
  WRAP    arch/x86/include/generated/asm/clkdev.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/cputime.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.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
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/pnmtologo
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
In file included from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/linux/compiler.h:54:0,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/uapi/linux/stddef.h:1,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/linux/stddef.h:4,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/uapi/linux/posix_types.h:4,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/uapi/linux/types.h:13,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/linux/types.h:5,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/include/linux/mod_devicetable.h:11,
                 from /home/me/poky/build/tmp/work-shared/test/kernel-source/scripts/mod/devicetable-offsets.c:2:
/home/me/poky/build/tmp/work-shared/test/kernel-source/include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h: No such file or directory
compilation terminated.
make[4]: *** [scripts/mod/devicetable-offsets.s] Error 1
make[3]: *** [scripts/mod] Error 2
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [scripts] Error 2
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [sub-make] Error 2
make: *** [__sub-make] Error 2
WARNING: /home/me/poky/build/tmp/work/test-poky-linux/linux-yocto-custom/3.16+gitAUTOINC+19583ca584-r0/temp/run.do_compile.32722:1 exit 1 from
  exit 1
ERROR: oe_runmake failed
ERROR: Function failed: do_compile (log file is located at /home/me/poky/build/tmp/work/test-poky-linux/linux-yocto-custom/3.16+gitAUTOINC+19583ca584-r0/temp/log.do_compile.32722)

Я считаю, что наиболее важной частью является эта часть приведенного выше журнала:

compiler-gcc.h:106:30: fatal error: linux/compiler-gcc5.h: No such file or directory

Я действительно в тупике, потому что файл создается во время сборки «compiler-gcc5.h» в месте build/tmp/work/test-poky-linux/core-image-test/1.0-r0/rootfs/usr/src/kernel/include/linux/compiler-gcc5.h. Что тут происходит? Мне кажется, что этот заголовочный файл запрашивается перед получением, но я не знаю, как это исправить.


person karobar    schedule 05.11.2015    source источник


Ответы (1)


Поскольку вы получаете ядро ​​непосредственно из дерева Линуса, версия 3.16 не поддерживает сборку с помощью gcc5.

Если вместо этого вы измените выборку из git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git, то есть из стабильного дерева, и измените на v3.16.7:

SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git;protocol=git;nocheckout=1;name=machine;branch=linux-3.16.y"
SRCREV_test = "d0335e4feea0d3f7a8af3116c5dc166239da7521"

тогда вы сможете без проблем собрать ядро.

person Anders    schedule 06.11.2015
comment
Я пытаюсь собрать ядро ​​​​Linux v2.6... получаю ту же ошибку, но с gcc 6... будет ли это решение работать и для меня? - person Bernardo Rodrigues; 30.12.2018