'致命错误:linux / compiler-gcc5.h:没有这样的文件或目录'在bitbake期间

时间:2015-11-05 16:48:08

标签: linux gcc yocto bitbake openembedded

我正在尝试使用非yocto自定义源对配方运行bitbake。使用linux-yocto源工作正常,但是当我尝试使用yocto项目文件提供的linux-yocto-custom骨架文件时,我遇到了问题。

我的文件结构看起来有点像这样:

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

我真的很难过,因为在构建期间会生成一个文件&g;编译器-gcc5.h'在build/tmp/work/test-poky-linux/core-image-test/1.0-r0/rootfs/usr/src/kernel/include/linux/compiler-gcc5.h位置。这里发生了什么?在我看来,这个头文件在被提取之前被请求但我不知道如何修复它。

1 个答案:

答案 0 :(得分:1)

当您直接从Linus树中获取内核时,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"

那么你应该能够毫无问题地构建内核。