Yocto SDK 介绍(一)
日期: 2020-12-09 分类: 跨站数据测试 1315次阅读
Yocto SDK 介绍(一)
eSDK(Extensible Software Development Kit)介绍
1.1 eSDK概述
该文档主要用于介绍Yocto Project应用开发和拓展软件开发包,提供如何使用Yocto Project拓展包和标准包开发应用和镜像包的相关信息。
- 所有的SDKs都包含如下内容:
- 交叉编译工具链(Cross-Development Toolchain):工具链包含编译器(complier),调试器(debugger),还有一些杂项工具;
- 库文件,头文件,符号标签:这些东西都在镜像中指定。
- 环境设置脚本:这是一个shell脚本,只需要运行一次,设置交叉开发环境变量以供SDK使用。
此外,拓展的SDK中有一个工具能够让你更加容易的添加新的应用和库文件到镜像报中,修改已存在模块或组件的代码并烧写道目标板上测试这些改变,以便于让开发者轻松地将应用程序集成到OpenEmbedded构建系统中。
可以使用SDK独立开发和测试那些指定要在某些目标机器上运行的代码。sdk是完全独立的。二进制文件链接到它们自己的libc副本上,因此并不依赖于目标系统。为了实现这一点,在安装时动态加载器的指针就已经被配置,因次该路径不能被动态更改。这就是在populate_sdk和populate_sdk_ext归档文件周围使用包装器的原因。
SDKs的另一个重要特性是:只需要设置一次交叉编译工具链就可以生成其它平台也支持的二进制文件。这个特性主要是利用了目标板信息能作为编译器选项的参数集传入gcc。这个选项能够通过环境脚本设置,并包含在CC和LD变量中。这样可以在很大程度上减少工具所占用的空间。但是别误解,每一个目标板仍然需要一个相应的sysroot因为这些二进制文件都是指定了对应目标的。
1.2 SDK所含内容
SDK开发环境包含以下内容:
- 一个通用的SDK,这是一个指定架构的交叉工具链,且已经通过OpenEmbedded构建系统匹配了sysroot的所有构建。这个工具链和sysroot都是基于Metadata配置和扩展,允许你在主机上对目标板进行交叉开发。此外,这个拓展包包含了devtool工具。
- 快速仿真器(QEMU),它能够让你仿真目标板,但它不是SDK的一部分,你必须单独构建和包含这个仿真器。然而,QEMU在围绕SDK使用的开发过程中扮演着重要的角色。
简单的总结,这个拓展和标准SDK有一些共通的特性,但是,可扩展SDK具有强大的开发工具,可以帮助您更快地开发应用程序。下面的表格总结了标准SDK和可扩展SDK类型在构建时的主要区别:
特性 | 标准SDK | 拓展SDK |
---|---|---|
工具链 | 支持 | 支持 |
调试器 | 支持 | 支持 |
大小 | 100+MB | 1+GB(或者300+MB) |
devtool | 不支持 | 支持 |
构建镜像 | 不支持 | 支持 |
可升级 | 不支持 | 支持 |
管理sysroot | 不支持 | 支持 |
已安装的包 | 不支持 | 支持 |
结构 | 包 | 共享state |
注意:
- 对于拓展SDK而言,在SDK_EXT_TYPE为“full”或者 SDK_INCLUDE_TOOLCHAIN 为“1”的时候是直接包含了工具链和调试器的,默认情况下也是如此。
- Sysroot是通过devtool进行管理的,因此,在尝试添加其他库时,损坏SDK sysroot的可能性较小。
- 你可以将运行时包管理添加到标准SDK中,但是默认情况下不支持。
- 对于允许用户安装的“包”,你必须构建并使共享状态对可扩展SDK用户可用。
交叉开发工具链
该交叉开发工具链包含交叉编译器,交叉链接器,交叉调试器,用于为目标板开发用户用户空间的应用。此外,对于拓展SDK,该工具链内置了devtool功能。该工具链是通过运行SDK安装程序脚本或通过基于元数据配置或目标设备扩展的构建目录创建的。交叉工具链与匹配的目标sysroot一起工作。
sysroot
运行在目标体系结构的本地和目标sysroots包含所需的头文件和库文件。目标sysroot是根据目标根文件系统通过OpenEmbedded构建系统使用相同的metadata配置构建的交叉编译工具链。
QEMU模拟器
QEMU模拟器允许你模拟你的硬件设备兵运行你自己的应用或镜像。QEMU不是SDK的一部分,但是可以通过许多不同的方式使用它,如果是如下几种情况,那么QEMU已经安装好了并且可以直接使用:
- 通过远程克隆poky git 仓库创建了源码目录并且执行了环境配置脚本。
- 下载了Yocto Project发行版,解压并创建了一个源码目录,并且执行了环境配置脚本。
- 已经安装tarball交叉编译工具链且执行了交叉工具链的环境配置脚本。
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐