Yocto理论篇 | Yocto交叉开发工具链生成

当涉及到创建交叉开发工具链时,Yocto Project 将完成大部分工作。在Yocto项目开发环境中,交叉开发工具链用于构建在目标硬件上运行的镜像和应用程序。只需几个命令,OpenEmbedded构建系统就可以创建这些必要的工具链。

下图显示了关于工具链构造和使用的高级构建环境。

大部分工作发生在Build Host上。这是用于构建镜像的机器,通常在Yocto Project 环境中工作。运行BitBake 创建镜像时,OpenEmbedded构建系统使用主机gcc 编译器引导名为gcc-cross的交叉编译器。gcc-cross编译器是BitBake在创建目标镜像时用来编译源文件的。可以将gcc-cross简单地看作是一个自动生成的交叉编译器,只在BitBake内部使用。

注意:Extensible SDK不使用gcc-cross-canadian,因为此SDK提供了OpenEmbedded构建系统的副本,其中的sysroot包含gcc-cross

启动gcc-cross时发生的事件链如下:

gcc -> binutils-cross -> gcc-cross-initial -> linux-libc-headers -> glibc-initial -> glibc -> gcc-cross -> gcc-runtime
  • gcc:构建主机的GNU Compiler Collection(GCC)。
  • binutils-cross:运行引导操作的gcc-cross-initial所需的最小二进制工具。
  • gcc-cross-initial:创建交叉编译器的引导过程的早期阶段。这个阶段构建了足够的gcc-cross、C库和其他部分,以便在以后的阶段中完成最终的交叉编译器的构建。此工具是一个“native”包(即它被设计为在构建主机上运行)。
  • linux-libc-headers:交叉编译器需要的头文件。
  • glibc-initial:引导glibc所需的Embedded GNU C Library(GLIBC)的初始版本。
  • glibc:  GNU C Library。
  • gcc-cross:交叉编译器引导过程的最后一个阶段。此阶段将生成BitBake在为目标设备构建镜像时使用的实际交叉编译器。
  • gcc: The build host's GNU Compiler Collection (GCC).

注意:如果要用自定义版本替换此交叉编译器工具链,则必须替换gcc-cross。此工具也是一个“native”包(即它被设计为在构建主机上运行)。

  • gcc-runtime:工具链引导过程产生的运行库。此工具生成一个二进制文件,其中包含目标设备所需的运行库。

可以使用OpenEmbedded构建系统来为用于开发应用程序的可重定位SDK构建安装程序。当您运行安装程序时,它会安装包含开发工具(例如gcc-cross-canadia、binutils-cross-canadian和其他nativesdk-*工具)的工具链,这些工具是SDK的原生工具(即SDK_ARCH的原生工具),需要交叉编译和测试软件。此图显示了用于轻松构建此工具链的命令。这个交叉开发工具链是为了在SDKMACHINE上执行而构建的,可能与构建主机可能是同一台机器,也可能不是同一台机器。

注意:如果您的目标体系结构受Yocto Project的支持,那么可以利用Yocto Project附带的、已经包含交叉开发工具链安装程序的预构建镜像。

以下是可重定位工具链的引导过程:

gcc -> binutils-crosssdk -> gcc-crosssdk-initial -> linux-libc-headers ->
     glibc-initial -> nativesdk-glibc -> gcc-crosssdk -> gcc-cross-canadian
  • gcc:构建主机的GNU Compiler Collection(GCC)。
  • binutils-crosssdk:运行引导操作的gcc-crosssdk-initial所需的最小二进制工具。
  • gcc-crosssdk-initial:创建交叉编译器的引导过程的早期阶段。这个阶段构建了足够的gcc-crosssdk和支持部分,这样引导过程的最后一个阶段就可以生成完成的交叉编译器。此工具是在生成主机上运行的“native”二进制文件。
  • linux-libc-headers:交叉编译器需要的头文件。
  • glibc-initial:引导nativesdk-glibc所需的Embedded GLIBC的初始版本。
  • nativesdk-glibc:Embedded GLIBC需要引导gcc-crosssdk
  • gcc-crosssdk:可重定位交叉编译器引导过程的最后一个阶段。gcc-crosssdk是一个临时编译器,从不离开构建主机。它的目的是在引导过程中帮助创建最终的gcc-cross-canadian编译器,它是可重定位的。此工具也是一个“native”包(即它被设计为在构建主机上运行)。
  • gcc-cross-canadian:最终的可重定位交叉编译器。在SDKMACHINE上运行时,此工具生成在目标设备上运行的可执行代码。每个体系结构只生成一个cross-canadian编译器,因为它们可以针对不同的处理器优化,使用通过编译命令传递给编译器的配置。这避免了对多个编译器的需要,从而减少了工具链的大小。
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yocto Project 提供了一种用于构建嵌入式 Linux 发行版的框架,其中包括交叉编译工具的构建。通过 Yocto Project,您可以根据特定的硬件平台和软件需求,定制和构建适合您的嵌入式系统。 要构建 Yocto Project 的交叉编译工具,您需要执行以下步骤: 1. 配置环境:确保您的开发环境中已安装所需的工具,如 Git、Python 等。 2. 获取源码:从 Yocto Project 官方网站下载或使用 Git 克隆 Yocto Project 的源代码。 3. 配置构建:进入源码目录,运行 `source oe-init-build-env` 命令初始化构建环境。然后,通过编辑 `conf/local.conf` 文件来配置构建选项,例如目标硬件平台、软件包选择等。 4. 执行构建:运行 `bitbake <image-name>` 命令来构建 Yocto Project 镜像。其中 `<image-name>` 是您想要构建的镜像名称,例如 core-image-minimal。 5. 等待编译完成:Yocto Project 的构建过程可能需要一些时间,具体取决于您的系统性能和所选择的软件包数量。 6. 使用工具:一旦构建过程完成,您将在 `tmp/sysroots/<target-arch>/` 目录下找到生成交叉编译工具。可以将此路径添加到您的环境变量中,以便在开发过程中使用交叉编译工具。 请注意,以上步骤仅概述了构建 Yocto Project 交叉编译工具的基本过程。实际操作可能会因您的需求和特定的硬件平台而有所不同。建议参考 Yocto Project 官方文档以获取更详细的指导和信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值