Yocto 获取SDK(一)
1. 查找预构建的SDK安装程序
可以通过查找和运行Yocto Project附带的SDK安装脚本来使用现有的预构建的工具链。使用此方法,可以选择并下载特定体系结构的SDK安装程序,然后运行脚本以手动安装工具链。
以下这些步骤用于查找和手动安装工具链:
- 跳转到安装程序目录
- 打开用于构建主机的文件夹:打开与构建主机匹配的文件夹(即,对于32位计算机,为i686;对于64位计算机,为x86_64)
- 查找并安装SDK安装程序:需要查找并下载相应的安装程序以用于构建主机,目标硬件和镜像类型
安装程序文件(* .sh)遵循如下命名约定:
poky-glibc-host_system-core-image-type-arch-toolchain[-ext]-release.sh
Where:
host_system is a string representing your development system:
"i686" or "x86_64"
type is a string representing the image:
"sato" or "minimal"
arch is a string representing the target architecture:
"aarch64", "armv5e", "core2-64", "coretexa8hf-neon", "i586", "mips32r2",
"mips64", or "ppc7400"
release is the version of Yocto Project.
NOTE:
The standard SDK installer does not have the "-ext" string as
part of the filename.
Yocto项目提供的工具链基于core-image-sato
和core-image-minimal
镜像,并且包含适合针对这些镜像进行开发的库。
例如,如果构建主机是64-bit x86系统,并且需要用于64-bit core2目标的扩展SDK,请进入x86_64文件夹并下载以下安装程序:
poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-DISTRO.sh
- 运行安装程序: 确保具有执行权限并运行安装程序。以下示例来自 Downloads目录:
$ ~/Downloads/poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-DISTRO.sh
在执行脚本的过程中,选择工具链的根目录。有关更多信息,请参见"已安装的标准SDK目录结构"部分和“已安装的可扩展SDK目录结构”部分。
2. 构建一个SDK安装程序
除了查找和下载SDK安装程序之外,还可以生成SDK安装程序。按照以下步骤:
-
设置构建环境: 确保你的设置在shell中可以使用BitBake。请在《 Yocto项目开发任务手册》的“ 准备构建主机 ”部分获取有关如何准备本机Linu或使用CROPS构建主机的相关内容。
-
克隆“ poky”存储库: 需要具有Yocto Project Source Directory的本地副本(即本地poky存储库)。 请参阅《Yocto项目开发任务手册》中的“克隆poky存储库”部分,以及可能的“ poky中按分支检出”和“poky中按标签检出”部分,以获取有关如何克隆poky存储库和检出poky存储库的信息。
-
初始化构建环境:在源目录的根目录(即poky)中,运行oe-init-build-env环境设置脚本以在构建主机上定义OpenEmbedded构建环境。
$ source oe-init-build-env
除其他外,该脚本会创建“构建目录”,在本例中为“构建目录”,位于“源目录”中。 脚本运行后,当前的工作目录将被设置为构建目录。
-
确保正在为正确的机器构建安装程序:检查并确保“构建目录”中local.conf文件中的MACHINE变量与要构建的体系结构匹配。
-
确保SDK机器设置正确: 如果要构建与当前开发主机(即构建主机)不同的体系结构上运行的工具链,请确保正确设置了构建目录中local.conf文件中的SDKMACHINE变量。
注意 如果要为可扩展SDK构建SDK安装程序,则SDKMACHINE必须为所使用的计算机的体系结构设置值用于构建安装程序。 如果SDKMACHINE设置不正确,构建将失败并提供错误消息类似于以下内容:
The extensible SDK can currently only be built for the same architecture as the machine being built on - SDK_ARCH is set to i686 (likely via setting SDKMACHINE) which is different from the architecture of the build machine (x86_64). Unable to continue.
-
构建SDK安装程序: 要为标准SDK构建SDK安装程序并填充SDK映像,请使用以下命令形式。 确保完成了镜像替换(例如“ core-image-sato”):$ bitbake image -c populate_sdk,你可以使用以下命令形式对可扩展SDK执行相同的操作:
$ bitbake image -c populate_sdk_ext
这些命令将生成一个包含与你的目标根文件系统匹配的sysroot的SDK安装程序。当 bitbake完成后,SDK安装程序会放在
tmp/deploy/sdk
构建目录中。注意 默认情况下,先前的BitBake命令不会静态生成二进制文件。如果想使用工具链来构建这些类型的库,则需要确保SDK具有适当的静态开发库。在构建SDK安装程序之前需要在local.conf文件中添加TOOLCHAIN_TARGET_TASK变量。这样可以确保最终的SDK安装过程将安装适当的库软件包作为SDK的一部分。以下是使用libc静态开发库的示例:TOOLCHAIN_TARGET_TASK_append =”libc-staticdev”
-
运行安装程序: 现在可以从tmp/deploy/sdk构建目录中运行SDK安装程序。以下是一个示例:
$ cd ~/poky/build/tmp/deploy/sdk $ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-DISTRO.sh
在执行脚本的过程中,选择工具链的根目录。有关更多信息,请参见"已安装的标准SDK目录结构"部分和“已安装的可扩展SDK目录结构”部分。