使用yocto只构建gcc
我试图使用yocto只构建gcc。我尝试了“bitbake层显示配方”,它为gcc显示了多个配方,类似于bitbake-s使用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
#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实用程序的一部分提供的脚本,一些项目需要它来确定每个源文件的依赖关系
bitbake元工具链
或bitbake-c填充\u sdk imagename
。