mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00

Creation involved removing the overview-manual and replacing it with the getting-started manual. All links to the string "&YOCTO_DOCS_OVERVIEW_URL" had to be replaced with "&YOCTO_DOCS_GS_URL" across the entire YP manual set. I renamed files used to create the manual with prefixes suited for the new manual name, which is "Getting Started With Yocto Project". The style sheet for the new manual needed updating to display the new .PNG image for the title page. The mega-manual file had to be updated to include the files. The mega-manual.sed file had to be updated to include the new manual and not use the overview manual. (From yocto-docs rev: 6c7abf9192390121000f577d6c98f259d290d15d) Signed-off-by: Scott Rifenbark <srifenbark@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
430 lines
21 KiB
XML
430 lines
21 KiB
XML
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
|
|
[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
|
|
|
|
<appendix id='sdk-appendix-obtain'>
|
|
|
|
<title>Obtaining the SDK</title>
|
|
|
|
<section id='sdk-locating-pre-built-sdk-installers'>
|
|
<title>Locating Pre-Built SDK Installers</title>
|
|
|
|
<para>
|
|
You can use existing, pre-built toolchains by locating and running
|
|
an SDK installer script that ships with the Yocto Project.
|
|
Using this method, you select and download an architecture-specific
|
|
SDK installer and then run the script to hand-install the
|
|
toolchain.
|
|
</para>
|
|
|
|
<para>
|
|
Follow these steps to locate and hand-install the toolchain:
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<emphasis>Go to the Installers Directory:</emphasis>
|
|
Go to <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Open the Folder for Your Development System:</emphasis>
|
|
Open the folder that matches your host development system
|
|
(i.e. <filename>i686</filename> for 32-bit machines or
|
|
<filename>x86_64</filename> for 64-bit machines).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Locate and Download the SDK Installer:</emphasis>
|
|
You need to find and download the installer appropriate for
|
|
your development system, target hardware, and image type.
|
|
</para>
|
|
|
|
<para>The installer files (<filename>*.sh</filename>) follow
|
|
this naming convention:
|
|
<literallayout class='monospaced'>
|
|
poky-eglibc-<replaceable>host_system</replaceable>-core-image-<replaceable>type</replaceable>-<replaceable>arch</replaceable>-toolchain-ext-<replaceable>release</replaceable>.sh
|
|
|
|
Where:
|
|
<replaceable>host_system</replaceable> is a string representing your development system:
|
|
i686 or x86_64.
|
|
|
|
<replaceable>type</replaceable> is a string representing either a "sato" or "minimal"
|
|
image.
|
|
|
|
<replaceable>arch</replaceable> is a string representing the target architecture:
|
|
aarch64, armv5e, core2-64, coretexa8hf-neon, i586, mips3242,
|
|
mips64, or ppc7400.
|
|
|
|
<replaceable>release</replaceable> is the version of Yocto Project.
|
|
|
|
NOTE:
|
|
The standard SDK installer does not have the "-ext" string as
|
|
part of the filename.
|
|
|
|
</literallayout>
|
|
The toolchains provided by the Yocto Project are based off of
|
|
the <filename>core-image-sato</filename> and
|
|
<filename>core-image-minimal</filename> images and contain
|
|
libraries appropriate for developing against those images.
|
|
</para>
|
|
|
|
<para>For example, if your host development system is a
|
|
64-bit x86 system and you are need an extended SDK for a
|
|
64-bit core2 target, go into the <filename>x86_64</filename>
|
|
folder and download the following installer:
|
|
<literallayout class='monospaced'>
|
|
poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
|
|
</literallayout>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Run the Installer:</emphasis>
|
|
Be sure you have execution privileges and run the installer.
|
|
Following is an example from the <filename>Downloads</filename>
|
|
directory:
|
|
<literallayout class='monospaced'>
|
|
$ ~/Downloads/poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
|
|
</literallayout>
|
|
During execution of the script, you choose the root location
|
|
for the toolchain.
|
|
See the
|
|
"<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
|
|
section and the
|
|
"<link linkend='sdk-installed-extensible-sdk-directory-structure'>Installed Extensible SDK Directory Structure</link>"
|
|
section for more information.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
</section>
|
|
|
|
<section id='sdk-building-an-sdk-installer'>
|
|
<title>Building an SDK Installer</title>
|
|
|
|
<para>
|
|
As an alternative to locating and downloading a SDK installer,
|
|
you can build the SDK installer.
|
|
Follow these steps:
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<emphasis>Set Up the Build Environment:</emphasis>
|
|
Be sure you are set up to use BitBake in a shell.
|
|
See the
|
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
|
|
section in the Yocto Project Development Tasks Manual for
|
|
information on how to get a build host ready that is either a
|
|
native Linux machine or a machine that uses CROPS.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Clone the <filename>poky</filename> Repository:</emphasis>
|
|
You need to have a local copy of the Yocto Project
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
|
|
(i.e. a local <filename>poky</filename> repository).
|
|
See the
|
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</ulink>"
|
|
and possibly the
|
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>"
|
|
and
|
|
"<ulink url='&YOCTO_DOCS_DEV_URL;#checkout-out-by-tag-in-poky'>Checking Out by Tag in Poky</ulink>"
|
|
sections all in the Yocto Project Development Tasks Manual for
|
|
information on how to clone the <filename>poky</filename>
|
|
repository and check out the appropriate branch for your work.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Initialize the Build Environment:</emphasis>
|
|
While in the root directory of the Source Directory (i.e.
|
|
<filename>poky</filename>), run the
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
|
|
environment setup script to define the OpenEmbedded
|
|
build environment on your build host.
|
|
<literallayout class='monospaced'>
|
|
$ source &OE_INIT_FILE;
|
|
</literallayout>
|
|
Among other things, the script creates the
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
|
|
which is <filename>build</filename> in this case
|
|
and is located in the
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
|
|
After the script runs, your current working directory
|
|
is set to the <filename>build</filename> directory.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Make Sure You Are Building an Installer for the Correct Machine:</emphasis>
|
|
Check to be sure that your
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
|
|
variable in the <filename>local.conf</filename> file in your
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
|
|
matches the architecture for which you are building.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Make Sure Your SDK Machine is Correctly Set:</emphasis>
|
|
If you are building a toolchain designed to run on an
|
|
architecture that differs from your current development host
|
|
machine (i.e. the build machine), be sure that the
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>
|
|
variable in the <filename>local.conf</filename> file in your
|
|
Build Directory is correctly set.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Build the SDK Installer:</emphasis>
|
|
To build the SDK installer for a standard SDK and populate
|
|
the SDK image, use the following command form.
|
|
Be sure to replace <replaceable>image</replaceable> with
|
|
an image (e.g. "core-image-sato"):
|
|
<literallayout class='monospaced'>
|
|
$ bitbake <replaceable>image</replaceable> -c populate_sdk
|
|
</literallayout>
|
|
You can do the same for the extensible SDK using this command
|
|
form:
|
|
<literallayout class='monospaced'>
|
|
$ bitbake <replaceable>image</replaceable> -c populate_sdk_ext
|
|
</literallayout>
|
|
These commands result in a SDK installer that contains the
|
|
sysroot that matches your target root filesystem.</para>
|
|
|
|
<para>When the <filename>bitbake</filename> command completes,
|
|
the SDK installer will be in
|
|
<filename>tmp/deploy/sdk</filename> in the Build Directory.
|
|
<note><title>Notes</title>
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
By default, this toolchain does not build static
|
|
binaries.
|
|
If you want to use the toolchain to build these
|
|
types of libraries, you need to be sure your SDK
|
|
has the appropriate static development libraries.
|
|
Use the
|
|
<ulink url='&YOCTO_DOCS_REF_URL;#var-TOOLCHAIN_TARGET_TASK'><filename>TOOLCHAIN_TARGET_TASK</filename></ulink>
|
|
variable inside your <filename>local.conf</filename>
|
|
file to install the appropriate library packages
|
|
in the SDK.
|
|
Following is an example using
|
|
<filename>libc</filename> static development
|
|
libraries:
|
|
<literallayout class='monospaced'>
|
|
TOOLCHAIN_TARGET_TASK_append = " libc-staticdev"
|
|
</literallayout>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
For additional information on building the
|
|
installer, see the
|
|
<ulink url='https://wiki.yoctoproject.org/wiki/TipsAndTricks/RunningEclipseAgainstBuiltImage'>Cookbook guide to Making an Eclipse Debug Capable Image</ulink>
|
|
wiki page.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</note>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Run the Installer:</emphasis>
|
|
You can now run the SDK installer from
|
|
<filename>tmp/deploy/sdk</filename> in the Build Directory.
|
|
Following is an example:
|
|
<literallayout class='monospaced'>
|
|
$ cd ~/poky/build/tmp/deploy/sdk
|
|
$ ./poky-glibc-x86_64-core-image-sato-core2-64-toolchain-ext-&DISTRO;.sh
|
|
</literallayout>
|
|
During execution of the script, you choose the root location
|
|
for the toolchain.
|
|
See the
|
|
"<link linkend='sdk-installed-standard-sdk-directory-structure'>Installed Standard SDK Directory Structure</link>"
|
|
section and the
|
|
"<link linkend='sdk-installed-extensible-sdk-directory-structure'>Installed Extensible SDK Directory Structure</link>"
|
|
section for more information.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
</section>
|
|
|
|
<section id='sdk-extracting-the-root-filesystem'>
|
|
<title>Extracting the Root Filesystem</title>
|
|
|
|
<para>
|
|
After installing the toolchain, for some use cases you
|
|
might need to separately extract a root filesystem:
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
You want to boot the image using NFS.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
You want to use the root filesystem as the
|
|
target sysroot.
|
|
For example, the Eclipse IDE environment with the Eclipse
|
|
Yocto Plug-in installed allows you to use QEMU to boot
|
|
under NFS.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
You want to develop your target application
|
|
using the root filesystem as the target sysroot.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Follow these steps to extract the root filesystem:
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<emphasis>Locate and Download the Tarball for the Pre-Built
|
|
Root Filesystem Image File:</emphasis>
|
|
You need to find and download the root filesystem image
|
|
file that is appropriate for your target system.
|
|
These files are kept in the
|
|
<ulink url='&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;/machines/'>Index of Releases</ulink>
|
|
in the "machines" directory.</para>
|
|
|
|
<para>The "machines" directory contains tarballs
|
|
(<filename>*.tar.bz2</filename>) for supported machines.
|
|
The directory also contains flattened root filesystem
|
|
image files (<filename>*.ext4</filename>), which you can use
|
|
with QEMU directly.</para>
|
|
|
|
<para>The pre-built root filesystem image files
|
|
follow these naming conventions:
|
|
<literallayout class='monospaced'>
|
|
core-image-<replaceable>profile</replaceable>-<replaceable>arch</replaceable>.tar.bz2
|
|
|
|
Where:
|
|
<replaceable>profile</replaceable> is the filesystem image's profile:
|
|
lsb, lsb-dev, lsb-sdk, lsb-qt3, minimal, minimal-dev, sato,
|
|
sato-dev, sato-sdk, minimal-initramfs, or sdk-ptest. For
|
|
information on these types of image profiles, see the
|
|
"Images" chapter in the Yocto Project Reference Manual.
|
|
|
|
<replaceable>arch</replaceable> is a string representing the target architecture:
|
|
beaglebone, edgerouter, genericx86, genericx86-64, mpc8315e-rdb,
|
|
qemuarm, qemuarm64, qemumips, qemumips64, qemuppc, qemux86, or
|
|
qemux86-64.
|
|
|
|
</literallayout>
|
|
The root filesystems provided by the Yocto Project are based
|
|
off of the <filename>core-image-sato</filename> and
|
|
<filename>core-image-minimal</filename> images.
|
|
</para>
|
|
|
|
<para>For example, if your target hardware system is a
|
|
BeagleBone board and your image is a
|
|
<filename>core-image-minimal</filename> image, you need
|
|
to download the following root filesystem image file:
|
|
<literallayout class='monospaced'>
|
|
core-image-minimal-beaglebone.tar.bz2
|
|
</literallayout>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Initialize the Cross-Development Environment:</emphasis>
|
|
You must <filename>source</filename>
|
|
the cross-development environment setup script to establish
|
|
necessary environment variables.</para>
|
|
|
|
<para>This script is located in the top-level directory in
|
|
which you installed the toolchain (e.g.
|
|
<filename>poky_sdk</filename>).</para>
|
|
|
|
<para>Following is an example for the Core2 64-bit
|
|
architecture:
|
|
<literallayout class='monospaced'>
|
|
$ source ~/poky_sdk/environment-setup-core2-64-poky-linux
|
|
</literallayout>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis>Extract the Root Filesystem:</emphasis>
|
|
Use the <filename>runqemu-extract-sdk</filename> command
|
|
and provide the root filesystem image.</para>
|
|
|
|
<para>Following is an example command that extracts the root
|
|
filesystem from a previously built root filesystem image that
|
|
was downloaded from the
|
|
<ulink url='&YOCTO_DOCS_GS_URL;#index-downloads'>Index of Releases</ulink>.
|
|
This command extracts the root filesystem into the
|
|
<filename>core2-64-sato</filename> directory:
|
|
<literallayout class='monospaced'>
|
|
$ runqemu-extract-sdk ~/Downloads/core-image-sato-core2-64.tar.bz2 ~/core2-64-sato
|
|
</literallayout>
|
|
You could now point to the target sysroot at
|
|
<filename>core2-64-sato</filename>.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
</section>
|
|
|
|
<section id='sdk-installed-standard-sdk-directory-structure'>
|
|
<title>Installed Standard SDK Directory Structure</title>
|
|
|
|
<para>
|
|
The following figure shows the resulting directory structure after
|
|
you install the Standard SDK by running the <filename>*.sh</filename>
|
|
SDK installation script:
|
|
</para>
|
|
|
|
<para>
|
|
<imagedata fileref="figures/sdk-installed-standard-sdk-directory.png" scale="60" align="center" />
|
|
</para>
|
|
|
|
<para>
|
|
The installed SDK consists of an environment setup script for the SDK,
|
|
a configuration file for the target, a version file for the target,
|
|
and the root filesystem (<filename>sysroots</filename>) needed to
|
|
develop objects for the target system.
|
|
</para>
|
|
|
|
<para>
|
|
Within the figure, italicized text is used to indicate replaceable
|
|
portions of the file or directory name.
|
|
For example,
|
|
<replaceable>install_dir</replaceable>/<replaceable>version</replaceable>
|
|
is the directory where the SDK is installed.
|
|
By default, this directory is <filename>/opt/poky/</filename>.
|
|
And, <replaceable>version</replaceable> represents the specific
|
|
snapshot of the SDK (e.g. <filename>&DISTRO;</filename>).
|
|
Furthermore, <replaceable>target</replaceable> represents the target
|
|
architecture (e.g. <filename>i586</filename>) and
|
|
<replaceable>host</replaceable> represents the development system's
|
|
architecture (e.g. <filename>x86_64</filename>).
|
|
Thus, the complete names of the two directories within the
|
|
<filename>sysroots</filename> could be
|
|
<filename>i586-poky-linux</filename> and
|
|
<filename>x86_64-pokysdk-linux</filename> for the target and host,
|
|
respectively.
|
|
</para>
|
|
</section>
|
|
|
|
<section id='sdk-installed-extensible-sdk-directory-structure'>
|
|
<title>Installed Extensible SDK Directory Structure</title>
|
|
|
|
<para>
|
|
The following figure shows the resulting directory structure after
|
|
you install the Extensible SDK by running the <filename>*.sh</filename>
|
|
SDK installation script:
|
|
</para>
|
|
|
|
<para>
|
|
<imagedata fileref="figures/sdk-installed-extensible-sdk-directory.png" scale="60" align="center" />
|
|
</para>
|
|
|
|
<para>
|
|
The installed directory structure for the extensible SDK is quite
|
|
different than the installed structure for the standard SDK.
|
|
The extensible SDK does not separate host and target parts in the
|
|
same manner as does the standard SDK.
|
|
The extensible SDK uses an embedded copy of the OpenEmbedded
|
|
build system, which has its own sysroots.
|
|
</para>
|
|
|
|
<para>
|
|
Of note in the directory structure are an environment setup script
|
|
for the SDK, a configuration file for the target, a version file for
|
|
the target, and a log file for the OpenEmbedded build system
|
|
preparation script run by the installer.
|
|
</para>
|
|
|
|
<para>
|
|
Within the figure, italicized text is used to indicate replaceable
|
|
portions of the file or directory name.
|
|
For example,
|
|
<replaceable>install_dir</replaceable> is the directory where the SDK
|
|
is installed, which is <filename>poky_sdk</filename> by default.
|
|
<replaceable>target</replaceable> represents the target
|
|
architecture (e.g. <filename>i586</filename>) and
|
|
<replaceable>host</replaceable> represents the development system's
|
|
architecture (e.g. <filename>x86_64</filename>).
|
|
</para>
|
|
</section>
|
|
|
|
</appendix>
|
|
<!--
|
|
vim: expandtab tw=80 ts=4
|
|
-->
|