使用yocto只构建gcc

使用yocto只构建gcc,yocto,gcc4.8,Yocto,Gcc4.8,我试图使用yocto只构建gcc。我尝试了“bitbake层显示配方”,它为gcc显示了多个配方,类似于bitbake-s #bitbake-layers show-recipes gcc: meta 4.8.2 gcc-cross: meta 4.8.2 gcc-cross-canadian-arm: meta 4.8.2 gcc-cross-initial: meta

我试图使用yocto只构建gcc。我尝试了“bitbake层显示配方”,它为gcc显示了多个配方,类似于bitbake-s

#bitbake-layers show-recipes 
gcc:
  meta                 4.8.2
gcc-cross:
  meta                 4.8.2
gcc-cross-canadian-arm:
  meta                 4.8.2
gcc-cross-initial:
  meta                 4.8.2
gcc-crosssdk:
  meta                 4.8.2
gcc-crosssdk-initial:
  meta                 4.8.2
gcc-runtime:
  meta                 4.8.2
gccmakedep:
  meta                 1:1.0.2

#bitbake -s 
gcc                                                 :4.8.2-r0                          
gcc-cross                                           :4.8.2-r0                          
gcc-cross-canadian-arm                              :4.8.2-r0                          
gcc-cross-initial                                   :4.8.2-r0                          
gcc-crosssdk                                        :4.8.2-r0                          
gcc-crosssdk-initial                                :4.8.2-r0                          
gcc-runtime                                         :4.8.2-r0                          
gccmakedep                                         1:1.0.2-r3
请引导我理解为什么有多个与gcc相关的食谱,以及我必须构建哪一个


在yocto中,配方和包装是一对一的匹配。i、 创建每个包只有一个对应的配方?

GCC是一个巨大的项目。也许这可以帮助你更好地理解GCC和Yocto。以下信息是Alex Gonzalez的“使用Yocto项目食谱的嵌入式Linux项目”中的一些信息

GNU工具链包含以下组件:

汇编程序(GNU as):binutils包的一部分

链接器(GNU Id): binutils包的一部分

编译器(GNU GCC):支持C,C++, Java、Ada、Fortran和Objective C

调试器(GNU gdb):GNU调试器

二进制文件工具(objdump、nm、objcopy、readelf、strip等): 这些是binutils包的一部分

这些组件足以构建裸机应用程序 像u-boot、Linux内核这样的引导加载程序,因为它们不需要C 它们实现了所需的C库函数。 LInux用户空间应用程序需要兼容POSIX的C库

glibc是Yocto项目中使用的默认C库

在嵌入式系统上,我们需要一个交叉编译工具链。我们建造 但在目标计算机上运行结果二进制文件 通常是不同的架构。有几种类型的工具链 基于构建机、目标机

最常见的组合是:

本机:这方面的一个示例是运行工具链的x86机器,该工具链也构建在x86机器上 生成要在x86机器上运行的二进制文件。这在桌面上很常见 电脑

交叉编译:这是嵌入式系统中最常见的 系统;例如,运行工具链的x86机器 已在x86计算机上构建,但正在生成二进制文件以在 不同的架构,比如ARM

跨本机:这通常是 在目标上运行的工具链。例如,工具链 已在x86机器上构建,但在ARM上运行并生产

加拿大人:很少见到,这是构建、宿主和目标的位置 机器都是不同的


GCC是一个巨大的项目。也许这可以帮助你更好地理解GCC和Yocto。以下信息是Alex Gonzalez的“使用Yocto项目食谱的嵌入式Linux项目”中的一些信息

GNU工具链包含以下组件:

汇编程序(GNU as):binutils包的一部分

链接器(GNU Id): binutils包的一部分

编译器(GNU GCC):支持C,C++, Java、Ada、Fortran和Objective C

调试器(GNU gdb):GNU调试器

二进制文件工具(objdump、nm、objcopy、readelf、strip等): 这些是binutils包的一部分

这些组件足以构建裸机应用程序 像u-boot、Linux内核这样的引导加载程序,因为它们不需要C 它们实现了所需的C库函数。 LInux用户空间应用程序需要兼容POSIX的C库

glibc是Yocto项目中使用的默认C库

在嵌入式系统上,我们需要一个交叉编译工具链。我们建造 但在目标计算机上运行结果二进制文件 通常是不同的架构。有几种类型的工具链 基于构建机、目标机

最常见的组合是:

本机:这方面的一个示例是运行工具链的x86机器,该工具链也构建在x86机器上 生成要在x86机器上运行的二进制文件。这在桌面上很常见 电脑

交叉编译:这是嵌入式系统中最常见的 系统;例如,运行工具链的x86机器 已在x86计算机上构建,但正在生成二进制文件以在 不同的架构,比如ARM

跨本机:这通常是 在目标上运行的工具链。例如,工具链 已在x86机器上构建,但在ARM上运行并生产

加拿大人:很少见到,这是构建、宿主和目标的位置 机器都是不同的


依次解释每一项:

  • gcc是在目标机器本身上运行的gcc的配方
  • gcc cross是构建系统使用的交叉编译器。如果您为需要使用gcc编译的目标构建了任何配方,那么这就是将用于编译该配方的内容
  • gcc cross canadian-是SDK的最终可重定位交叉编译器,在本例中是针对ARM体系结构的
  • gcc crosssdk是生成gcc crosssdk的中间步骤
  • *-initial是分别为标准交叉编译器和SDK引导工具链所需的编译器的初始版本
  • gcc运行时构建作为gcc一部分的运行时组件(例如libstdc++)
  • gccmakedep并不是gcc本身的一部分,它是作为X11实用程序的一部分提供的脚本,一些项目需要它来确定每个源文件的依赖关系
当您说“您只需要构建gcc”时,并不完全清楚您的意思,但我怀疑它是针对目标的gcc(在这种情况下,它是“gcc”,尽管我怀疑您可能需要更多-packagegroup core buildessential可能是您想要的)或者,您需要一个交叉编译器,可以单独安装,在这种情况下,您可能应该
bitbake元工具链
bitbake-c填充\u sdk imagename