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

(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编译器,因为它们可以针对不同的处理器优化,使用通过编译命令传递给编译器的配置。这避免了对多个编译器的需要,从而减少了工具链的大小。
yocto(五)——构建SDK及添加工具链 1 为什么使用SDK 在上一篇文章中讲解了如何添加自定义软件,整个过程还是较麻烦的,那若有一些软件是开源工具呢?比如某个性能测试工具,按上一篇文章添加方式添加太麻烦,并且标准工具也不需要修改,所以不需要将工具源码一起加入项目工程编译,只需使用yocto工程编译环境编译好工具再加入映像中即可。 以下为SDK生成输出工作流。 构建输出的是一组特定形式文件,其中包括SDK自解压安装程序(*.sh)、主机、目标清单文件以及用于SDK测试的文件。SDK详细介绍可参阅 https://www.yoctoproject 阅读详情

相关推荐

Yocto理论篇 OpenEmbedded构建系统之SDK_-c populate_sdk

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_84009579的博客 1070

yocto工程开发手册(中文)

yocto工程开发手册(中文)

Yocto理论篇 OpenEmbedded构建系统之Metadata、Machine Configuration与Policy Configuration_meta-data创建 yocto(1)

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_84009549的博客 1026

STM32MP157基于Yocto构建Qt镜像和SDK工具链

zzssdd2记录下整个过程以及在该过程中遇到的问题和解决方法。

zzssdd2的博客 3230

Yocto理论篇 OpenEmbedded构建系统之SDK_-c populate_sdk(1)

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_84009579的博客 1349

Yocto系列讲解[理论篇] 6 - yocto是什么,学习它不难

什么是yocto为,学习它一点也不难

fulinux的博客 7990

Yocto项目笔记

Yocto项目工具链安装 ~/works/Yocto/release/ALS$ tools/x86_64-buildtools-nativesdk-standalone-2.4.3.sh 需要输入工具链安装目录,例如buildtools Build tools installer version 2.4.3 =================================== Enter target directory for SDK (default: /opt/poky/2.4.3): ~/wo.

AndyTsui的专栏 538

Yocto系列讲解[理论篇]21 - yocto项目的概念(1)

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.youkuaiyun.com/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录

fulinux的博客 4645

Yocto理论篇 | OpenEmbedded构建系统之SDK

1 工作流 下图表示OpenEmbedded构建系统生成的高级工作流: 通常,构建的工作流由几个功能区域组成: User Configuration:可用于控制生成过程的元数据。 Metadata Layers:提供软件、板子和发行版元数据的各种层。 Source Files:上游发布、本地项目和SCMs。 Build System:在BitBake控制下的进程。这个模块扩展了BitBake如何获取源代码、应用补丁、完成编译、分析生成包的输出、创建和测试包、生成镜像以及

Systemcall名屋 1131

Yocto系列讲解[理论篇]22 - yocto项目的概念(2)

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.youkuaiyun.com/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录OpenEmbedded构建系统概念Distro LayerBSP LayerSoftware Layer OpenEmbedded构建系统概念 继续上一篇的内容 Distro Layer Distro Layer为自己的发行版提供策略配置。最好的做法就是在自己的Layer中定义相关类型的配置,起到隔.

fulinux的博客 3058

Yocto系列讲解[理论篇]32 - qemu Linux kernle默认的配置

Linux kernle默认的配置Linux recipelinux版本在哪里设置?linux源码在哪里下载?yocto-kernel-cache是什么?Linux-yocto使用哪个config配置呢?

fulinux的博客 2009

Yocto理论篇 | Yocto Project概述

一、什么是Yocto Project? Yocto项目是一个开源协作项目,它帮助开发人员定制基于Linux的系统,这些系统是为嵌入式产品而设计的,与产品的硬件架构无关。Yocto项目提供了一个灵活的工具集和一个开发环境,允许全世界的嵌入式开发人员通过共享技术、软件堆栈、配置和最佳实践进行协作,以生成这些定制的Linux镜像。 全球数千名开发人员发现,Yocto项目在系统和应用程序开发、归档和管理以及用于速度、占用空间和内存利用的定制方面都具有优势。这个项目是交付嵌入式软件栈的标准。该项目允许软件定制和建

Systemcall名屋 2696

yocto系列讲解[理论篇]56 - poky下目录结构

poky目录下的核心组件bitbake目录build目录documentation目录 我相信大家再看到poky目录下的内容时有点一脸懵逼,搞不清楚可能也不想搞清楚,但是了解每个子目录作用对你还是很有帮助的。 poky]$ ls bitbake LICENSE MEMORIAM meta-mylayer meta-selftest README.hardware scripts build LICE

fulinux的博客 4366

Yocto项目初期必备工具链部署完整示例

深入讲解Yocto项目启动阶段所需工具链的完整搭建过程,涵盖环境配置与关键组件安装,帮助开发者快速上手yocto构建系统,提升嵌入式开发效率。

weixin_42502040的博客 879

Yocto系列讲解[理论篇] 3 - meta layer recipe class概念介绍

meta/recipes.txt内容讲解顺便看下meta目录

fulinux的博客 6868

Yocto开发讲解系列 - 总目录

Yocto开发讲解系列总纲Yocto开发专栏前言

fulinux的博客 3万+

Yocto理论篇 | OpenEmbedded构建系统之BitBake

1 工作流 下图表示OpenEmbedded构建系统生成的高级工作流: 通常,构建的工作流由几个功能区域组成: User Configuration:可用于控制生成过程的元数据。 Metadata Layers:提供软件、板子和发行版元数据的各种层。 Source Files:上游发布、本地项目和SCMs。 Build System:在BitBake控制下的进程。这个模块扩展了BitBake如何获取源代码、应用补丁、完成编译、分析生成包的输出、创建和测试包、生成镜像以及

Systemcall名屋 2495

yocto理论篇-local.conf学习

在Yocto项目中,local.conf 文件是构建配置中的一个关键组成部分,它位于构建环境目录下的 conf/ 子目录中。这个文件主要用于包含用户的自定义配置,允许用户覆盖或扩展构建系统的默认行为而无需直接修改Yocto框架的核心配置文件。覆盖默认的构建变量:例如,你可以在这里设置目标系统的架构 (MACHINE) 或者发行版 (DISTRO)。指定构建的输出位置:例如,通过设置 DL_DIR、SSTATE_DIR、TMPDIR 等变量来指定下载目录、状态缓存目录、临时文件目录等。

甜航一直在的博客 759
上一篇: Yocto理论篇 | OpenEmbedded构建系统之SDK
下一篇: Yocto理论篇 | Yocto共享状态缓存
嵌入式逍遥
嵌入式逍遥 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄9年 7万+粉丝 237原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值