5获取SDK

5获取SDK

目录

5获取SDK

5.1定位预构建的 SDK 安装程序

5.2构建 SDK 安装程序

5.3提取根文件系统

5.4安装的标准 SDK 目录结构

5.5已安装的可扩展SDK目录结构


5.1定位预构建的 SDK 安装程序

您可以通过定位并运行 Yocto 项目附带的 SDK 安装程序脚本来使用现有的预构建工具链。使用此方法,您选择并下载特定于体系结构的 SDK 安装程序,然后运行脚本以手动安装工具链。

按照以下步骤找到并手动安装工具链:

  1. 转到安装程序目录:转到 https://downloads.yoctoproject.org/releases/yocto/yocto-3.3.2/toolchain/

  2. 打开构建主机的文件夹打开与构建主机匹配的文件夹(即 i686对于 32 位机器或x86_6464 位机器)。

  3. 找到并下载 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", "cortexa8hf-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 位 x86 系统并且您需要用于 64 位 core2 目标的扩展 SDK,请进入该x86_64 文件夹并下载以下安装程序:

    poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-3.3.2.sh
    
  4. 运行安装程序:确保您具有执行权限并运行安装程序。以下是Downloads 目录中的示例:

    $ ~/Downloads/poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-3.3.2.sh
    

    在脚本执行期间,您选择工具链的根位置。有关详细信息,请参阅“已安装的标准 SDK 目录结构”部分和“已安装的可扩展 SDK 目录结构”部分。

5.2构建 SDK 安装程序

作为查找和下载 SDK 安装程序的替代方法,您可以构建 SDK 安装程序。请按照以下步骤操作:

  1. 设置构建环境:确保您已设置为在 shell 中使用 BitBake。有关如何准备好构建主机的信息,请参阅Yocto 项目开发任务手册中的“准备构建主机”部分,该构建主机是本机 Linux 机器或使用 CROPS 的机器。

  2. 克隆 ``poky`` 存储库:您需要拥有 Yocto 项目源目录的本地副本 (即本地 poky存储库)。请参阅Yocto 项目开发任务手册中的“克隆 poky 存储库”以及可能的“通过 Poky 中的分支检出”和“在 Poky 中通过标记检出”部分,了解有关如何克隆poky存储库并检出适当的信息分支为您的工作。

  3. 初始化构建环境:在源目录的根目录(即poky)中,运行 oe-init-build-env环境设置脚本以在构建主机上定义 OpenEmbedded 构建环境。

    $ source oe-init-build-env
    

    除其他外,脚本创建了Build Directory, build在这种情况下,它位于 Source Directory 中。脚本运行后,您当前的工作目录将设置为该 build目录。

  4. 确保您正在为正确的机器构建安装程序: 检查以确保 构建目录中文件中的MACHINE变量 local.conf与您正在构建的体系结构相匹配。

  5. 确保您的 SDK 机器设置正确:如果您正在构建一个工具链,该工具链旨在在与您当前的开发主机(即构建主机)不同的架构上运行,请确保构建目录中的文件中的SDKMACHINE变量local.conf是正确设置。

    注意

    如果您正在为可扩展 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.
    
  6. 构建 SDK 安装程序:要为标准 SDK 构建 SDK 安装程序并填充 SDK 映像,请使用以下命令形式。确保替换image为图像(例如“core-image-sato”):

    $ bitbake image -c populate_sdk
    

    您可以使用以下命令表单对可扩展 SDK 执行相同操作:

    $ bitbake image -c populate_sdk_ext
    

    这些命令会生成一个 SDK 安装程序,其中包含与您的目标根文件系统匹配的 sysroot。

    bitbake命令完成后,SDK安装程序会在 tmp/deploy/sdkbuild目录。

    注意

    • 默认情况下,之前的 BitBake 命令不会构建静态二进制文件。如果您想使用工具链来构建这些类型的库,您需要确保您的 SDK 具有相应的静态开发库。在构建 SDK 安装程序之前使用文件中的 TOOLCHAIN_TARGET_TASK 变量local.conf。这样做可确保最终的 SDK 安装过程安装适当的库包作为 SDK 的一部分。以下是使用libc 静态开发库的示例: TOOLCHAIN_TARGET_TASK:append = ” libc-staticdev”

  7. 运行安装程序:您现在可以从tmp/deploy/sdk构建目录中运行 SDK 安装程序 。下面是一个例子:

    $ cd poky/build/tmp/deploy/sdk
    $ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-3.3.2.sh
    

    在脚本执行期间,您选择工具链的根位置。有关详细信息,请参阅“已安装的标准 SDK 目录结构”部分和“已安装的可扩展 SDK 目录结构”部分。

5.3提取根文件系统

安装工具链后,对于某些用例,您可能需要单独提取根文件系统:

  • 您想使用 NFS 引导映像。

  • 您想使用根文件系统作为目标 sysroot。

  • 您希望使用根文件系统作为目标 sysroot 来开发目标应用程序。

按照以下步骤提取根文件系统:

  1. 找到并下载预构建的根文件系统映像文件的 Tarball:您需要找到并下载适合您的目标系统的根文件系统映像文件。这些文件保存在 “machines”目录下“版本索引”中特定于机器的文件夹中 。

    “machines”目录的特定于机器的文件夹包含*.tar.bz2受支持机器的tarball ( )。这些目录还包含扁平的根文件系统映像文件 ( *.ext4),您可以直接与 QEMU 一起使用。

    预构建的根文件系统映像文件遵循以下命名约定:

    core-image-profile-arch.tar.bz2
    
    Where:
        profile is the filesystem image's profile:
                  lsb, lsb-dev, lsb-sdk, minimal, minimal-dev, minimal-initramfs,
                  sato, sato-dev, sato-sdk, sato-sdk-ptest. For information on
                  these types of image profiles, see the "Images" chapter in
                  the Yocto Project Reference Manual.
    
        arch is a string representing the target architecture:
                  beaglebone-yocto, beaglebone-yocto-lsb, edgerouter, edgerouter-lsb,
                  genericx86, genericx86-64, genericx86-64-lsb, genericx86-lsb and qemu*.
    

    Yocto 项目提供的根文件系统基于 core-image-satocore-image-minimal图像。

    例如,如果您计划使用 BeagleBone 设备作为目标硬件并且您的映像是core-image-sato-sdk映像,则可以下载以下文件:

    core-image-sato-sdk-beaglebone-yocto.tar.bz2
    
  2. 初始化交叉开发环境:您必须source 使用交叉开发环境设置脚本来建立必要的环境变量。

    该脚本位于您安装工具链的顶级目录中(例如poky_sdk)。

    以下是基于“定位预构建 SDK 安装程序”部分中安装的工具链的示例:

    $ source poky_sdk/environment-setup-core2-64-poky-linux
    
  3. 提取根文件系统:使用该runqemu-extract-sdk 命令并提供根文件系统映像。

    以下是从先前构建的根文件系统映像中提取根文件系统的示例命令,该映像是从发布索引下载的。此命令将根文件系统提取到core2-64-sato 目录中:

    $ runqemu-extract-sdk ~/Downloads/core-image-sato-sdk-beaglebone-yocto.tar.bz2 ~/beaglebone-sato
    

    您现在可以将目标 sysroot 指向beaglebone-sato.

5.4安装的标准 SDK 目录结构

下图显示了通过运行*.shSDK 安装脚本安装标准 SDK 后生成的目录结构:

../_images/sdk-installed-standard-sdk-directory.png

已安装的 SDK 由 SDK 的环境设置脚本、目标的配置文件、目标的版本文件以及sysroots为目标系统开发对象所需的根文件系统 ( ) 组成。

在图中,斜体文本用于指示文件或目录名称的可替换部分。比如install_dir/version就是SDK的安装目录。默认情况下,此目录为/opt/poky/. 并且,version 表示 SDK 的特定快照(例如 3.3.2)。此外,target 表示目标架构(例如i586),host 表示开发系统的架构(例如x86_64)。因此,目标和主机中两个目录的完整名称sysroots可以分别是i586-poky-linux和 x86_64-pokysdk-linux

5.5已安装的可扩展SDK目录结构

下图显示了通过运行*.shSDK 安装脚本安装可扩展 SDK 后生成的目录结构:

../_images/sdk-installed-extensible-sdk-directory.png

可扩展 SDK 的安装目录结构与标准 SDK 的安装结构完全不同。可扩展 SDK 不像标准 SDK 那样分离主机和目标部分。可扩展 SDK 使用 OpenEmbedded 构建系统的嵌入式副本,该系统具有自己的 sysroots。

目录结构中值得注意的是 SDK 的环境设置脚本、目标的配置文件、目标的版本文件以及由安装程序和 BitBake 运行的 OpenEmbedded 构建系统准备脚本的日志文件。

在图中,斜体文本用于指示文件或目录名称的可替换部分。例如 install_dir 是安装 SDK 的目录,poky_sdk默认是,target 代表目标架构(如i586)。


版权声明:本文为qq_15269787原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。