blob: fa0e8d40985e9bb04e4b2e9073a410052b177e9c [file] [log] [blame]
Andrew Geisslerf0343792020-11-18 10:42:21 -06001.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Andrew Geisslerc9f78652020-09-18 14:11:35 -05002
3**********************
4Using the Standard SDK
5**********************
6
7This chapter describes the standard SDK and how to install it.
8Information includes unique installation and setup aspects for the
9standard SDK.
10
11.. note::
12
13 For a side-by-side comparison of main features supported for a
14 standard SDK as compared to an extensible SDK, see the "
15 Introduction
16 " section.
17
18You can use a standard SDK to work on Makefile and Autotools-based
Andrew Geissler3b8a17c2021-04-15 15:55:55 -050019projects. See the
20":ref:`sdk-manual/working-projects:using the sdk toolchain directly`" chapter
21for more information.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050022
Andrew Geisslerc9f78652020-09-18 14:11:35 -050023Why use the Standard SDK and What is in It?
24===========================================
25
26The Standard SDK provides a cross-development toolchain and libraries
27tailored to the contents of a specific image. You would use the Standard
28SDK if you want a more traditional toolchain experience as compared to
29the extensible SDK, which provides an internal build system and the
30``devtool`` functionality.
31
32The installed Standard SDK consists of several files and directories.
33Basically, it contains an SDK environment setup script, some
34configuration files, and host and target root filesystems to support
Andrew Geissler3b8a17c2021-04-15 15:55:55 -050035usage. You can see the directory structure in the
36":ref:`sdk-manual/appendix-obtain:installed standard sdk directory structure`"
37section.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050038
Andrew Geisslerc9f78652020-09-18 14:11:35 -050039Installing the SDK
40==================
41
42The first thing you need to do is install the SDK on your :term:`Build
43Host` by running the ``*.sh`` installation script.
44
45You can download a tarball installer, which includes the pre-built
46toolchain, the ``runqemu`` script, and support files from the
Andrew Geissler09209ee2020-12-13 08:44:15 -060047appropriate :yocto_dl:`toolchain </releases/yocto/yocto-&DISTRO;/toolchain/>` directory within
Andrew Geisslerc9f78652020-09-18 14:11:35 -050048the Index of Releases. Toolchains are available for several 32-bit and
4964-bit architectures with the ``x86_64`` directories, respectively. The
50toolchains the Yocto Project provides are based off the
51``core-image-sato`` and ``core-image-minimal`` images and contain
52libraries appropriate for developing against that image.
53
54The names of the tarball installer scripts are such that a string
55representing the host system appears first in the filename and then is
56immediately followed by a string representing the target architecture.
57::
58
59 poky-glibc-host_system-image_type-arch-toolchain-release_version.sh
60
61 Where:
62 host_system is a string representing your development system:
63
64 i686 or x86_64.
65
66 image_type is the image for which the SDK was built:
67
68 core-image-minimal or core-image-sato.
69
70 arch is a string representing the tuned target architecture:
71
72 aarch64, armv5e, core2-64, i586, mips32r2, mips64, ppc7400, or cortexa8hf-neon.
73
74 release_version is a string representing the release number of the Yocto Project:
75
Andrew Geissler09209ee2020-12-13 08:44:15 -060076 &DISTRO;, &DISTRO;+snapshot
Andrew Geisslerc9f78652020-09-18 14:11:35 -050077
78For example, the following SDK installer is for a 64-bit
79development host system and a i586-tuned target architecture based off
Andrew Geisslerc926e172021-05-07 16:11:35 -050080the SDK for ``core-image-sato`` and using the current DISTRO snapshot::
Andrew Geisslerc9f78652020-09-18 14:11:35 -050081
82 poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
83
84.. note::
85
86 As an alternative to downloading an SDK, you can build the SDK
87 installer. For information on building the installer, see the "
88 Building an SDK Installer
89 " section.
90
91The SDK and toolchains are self-contained and by default are installed
92into the ``poky_sdk`` folder in your home directory. You can choose to
93install the extensible SDK in any location when you run the installer.
94However, because files need to be written under that directory during
95the normal course of operation, the location you choose for installation
96must be writable for whichever users need to use the SDK.
97
98The following command shows how to run the installer given a toolchain
99tarball for a 64-bit x86 development host system and a 64-bit x86 target
100architecture. The example assumes the SDK installer is located in
101``~/Downloads/`` and has execution rights.
102
103.. note::
104
105 If you do not have write permissions for the directory into which you
106 are installing the SDK, the installer notifies you and exits. For
107 that case, set up the proper permissions in the directory and run the
108 installer again.
109
110::
111
Andrew Geissler09209ee2020-12-13 08:44:15 -0600112 $ ./Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
113 Poky (Yocto Project Reference Distro) SDK installer version &DISTRO;
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500114 ===============================================================
Andrew Geissler09209ee2020-12-13 08:44:15 -0600115 Enter target directory for SDK (default: /opt/poky/&DISTRO;):
116 You are about to install the SDK to "/opt/poky/&DISTRO;". Proceed [Y/n]? Y
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500117 Extracting SDK........................................ ..............................done
118 Setting it up...done
119 SDK has been successfully set up and is ready to be used.
120 Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
Andrew Geissler09209ee2020-12-13 08:44:15 -0600121 $ . /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500122
Andrew Geissler3b8a17c2021-04-15 15:55:55 -0500123Again, reference the
124":ref:`sdk-manual/appendix-obtain:installed standard sdk directory structure`"
125section for more details on the resulting directory structure of the installed
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500126SDK.
127
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500128Running the SDK Environment Setup Script
129========================================
130
131Once you have the SDK installed, you must run the SDK environment setup
132script before you can actually use the SDK. This setup script resides in
133the directory you chose when you installed the SDK, which is either the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600134default ``/opt/poky/&DISTRO;`` directory or the directory you chose during
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500135installation.
136
137Before running the script, be sure it is the one that matches the
138architecture for which you are developing. Environment setup scripts
139begin with the string "``environment-setup``" and include as part of
140their name the tuned target architecture. As an example, the following
141commands set the working directory to where the SDK was installed and
142then source the environment setup script. In this example, the setup
Andrew Geisslerc926e172021-05-07 16:11:35 -0500143script is for an IA-based target machine using i586 tuning::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500144
Andrew Geissler09209ee2020-12-13 08:44:15 -0600145 $ source /opt/poky/&DISTRO;/environment-setup-i586-poky-linux
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500146
147When you run the
148setup script, the same environment variables are defined as are when you
Andrew Geissler3b8a17c2021-04-15 15:55:55 -0500149run the setup script for an extensible SDK. See the
150":ref:`sdk-manual/appendix-obtain:installed extensible sdk directory structure`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500151section for more information.