14. Application Development SDK¶
This section contains direct excerpts and quotes from publicly accessible documentation: Application Development SDK — © 2010–2021 The Yocto Project.

Figure 14.1 Application Development SDK with Details¶
In Figure 7.1, the output labeled Application Development SDK represents an SDK. The SDK generation process differs depending on whether you build an Extensible SDK (e.g. bitbake -c populate_sdk_ext imagename) or a Standard SDK (e.g. bitbake -c populate_sdk imagename).
Hint
The Yocto Project supports several methods by which you can set up this cross-development environment. These methods include downloading pre-built SDK installers (e.g. from a tool vendor) or building and installing your own SDK installer with the help of the Yocto Project.
For background information on cross-development toolchains in the Yocto Project development environment, see the Cross-Development Toolchain Generation section as part of the BitBake Tool Area.
For information on setting up a cross-development environment, see the Yocto Project Application Development and the Extensible Software Development Kit (eSDK) manual.
The specific form of this output is a set of files that includes a
self-extracting SDK installer (*.sh
), host and target manifest files,
and files used for SDK testing. When the SDK installer file is run, it
installs the SDK. The SDK consists of a cross-development toolchain, a set
of libraries and headers, and an SDK environment setup script. Running this
installer essentially sets up your cross-development environment. You can think
of the cross-toolchain as the host part because it runs on the SDK
machine. You can think of the libraries and headers as the target part
because they are built for the target hardware. The environment setup script
is added so that you can initialize the environment before using the tools.
Two different SDK types
All the output files for an SDK are written to the deploy/sdk
folder
inside the Build Directory as shown in Figure 14.1. Depending on the
type of SDK, several variables exist that help configure these files. For a
side-by-side comparison of main features supported for an Extensible SDK
as compared to a Standard SDK, see the
Introduction chapter in the Yocto Project Application Development and the Extensible Software Development Kit (eSDK).
Feature |
Standard SDK |
Extensible SDK |
---|---|---|
Toolchain |
Yes |
Yes 1 |
Debugger |
Yes |
Yes 1 |
Size |
100+ ㎆ |
1+ ㎇ (or 300+ ㎆ for minimal w/toolchain) |
No |
Yes |
|
Build Images |
No |
Yes |
Updateable |
No |
Yes |
Managed Sysroot 2 |
No |
Yes |
Installed Packages |
No 3 |
Yes 4 |
Construction |
Packages |
Shared State |
- 1(1,2)
Extensible SDK contains the toolchain and debugger if SDK_EXT_TYPE is
full
or SDK_INCLUDE_TOOLCHAIN is1
, which is the default.- 2
Sysroot is managed through the use of the devtool command. Thus, it is less likely that you will corrupt your SDK sysroot when you try to add additional libraries.
- 3
You can add runtime package management to the Standard SDK but it is not supported by default.
- 4
You must build and make the Shared State Cache available to Extensible SDK users for packages you want to enable users to install.
Extensible SDK
bitbake -c populate_sdk_ext imagename
The Yocto Project Extensible SDK (eSDK) has tools that allow you to easily add new applications and libraries to an image, modify the source of an existing component and test changes on the target hardware. The main benefit over the Standard SDK is improved team workflow due to tighter integration with the OpenEmbedded build system and have access to developer tools. For a detailed description see the Using the Extensible SDK chapter in the Yocto Project Application Development and the Extensible Software Development Kit (eSDK). News about development can read on the Yocto Project Wiki: Extensible SDK.
The following list shows the variables associated with an Extensible SDK:
DEPLOY_DIR: Points to the Deploy Directory inside the Build Directory.
SDK_EXT_TYPE: Controls whether or not shared state artifacts are copied into the Extensible SDK. By default, all required shared state artifacts are copied into the SDK.
SDK_INCLUDE_PKGDATA: Specifies whether or not package data is included in the Extensible SDK for all recipes in the world target.
SDK_INCLUDE_TOOLCHAIN: Specifies whether or not the toolchain is included when building the Extensible SDK.
SDK_LOCAL_CONF_WHITELIST: A list of variables allowed through from the build system configuration into the Extensible SDK configuration.
SDK_LOCAL_CONF_BLACKLIST: A list of variables not allowed through from the build system configuration into the Extensible SDK configuration.
SDK_INHERIT_BLACKLIST: A list of classes to remove from the INHERIT value globally within the Extensible SDK configuration.
See also
Standard SDK
bitbake -c populate_sdk imagename
The Standard SDK provides a cross-development toolchain and libraries tailored to the contents of a specific image. You would use the Standard SDK if you want a more traditional toolchain experience as compared to the Extensible SDK. For a detailed description see the Using the Standard SDK chapter in the Yocto Project Application Development and the Extensible Software Development Kit (eSDK). Some use case scenarios can read on the Yocto Project Wiki: SDK Generator.
This next list, shows the variables associated with a Standard SDK:
DEPLOY_DIR: Points to the deploy directory.
SDKMACHINE: Specifies the architecture of the machine on which the cross-development tools are run to create packages for the target hardware.
SDKIMAGE_FEATURES: Lists the features to include in the target part of the SDK.
TOOLCHAIN_HOST_TASK: Lists packages that make up the host part of the SDK (i.e. the part that runs on the SDKMACHINE). When you use BitBake to create the SDK, a set of default packages apply. This variable allows you to add more packages.
TOOLCHAIN_TARGET_TASK: Lists packages that make up the target part of the SDK (i.e. the part built for the target hardware).
SDKPATH: Defines the default SDK installation path offered by the installation script.
SDK_HOST_MANIFEST: Lists all the installed packages that make up the host part of the SDK. This variable also plays a minor role for Extensible SDK development as well. However, it is mainly used for the Standard SDK.
SDK_TARGET_MANIFEST: Lists all the installed packages that make up the target part of the SDK. This variable also plays a minor role for Extensible SDK development as well. However, it is mainly used for the Standard SDK.