mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
adt-manual: delete obsolete ADT manual, and related content
Since the ADT manual has long been superseded by the SDK manual, remove the entire adt-manual directory, and the references to it in the two top-level files "conf.py" and "poky.yaml". (From yocto-docs rev: 64b2e83bddf6af0439ac7089ac95e60faa696cfc) Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
507717949f
commit
43e3a19c19
|
@ -1,180 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
**********************
|
||||
Using the Command Line
|
||||
**********************
|
||||
|
||||
Recall that earlier the manual discussed how to use an existing
|
||||
toolchain tarball that had been installed into the default installation
|
||||
directory, ``/opt/poky/DISTRO``, which is outside of the :term:`Build Directory`
|
||||
(see the section
|
||||
"`Using a Cross-Toolchain
|
||||
Tarball) <#using-an-existing-toolchain-tarball>`__". And, that sourcing
|
||||
your architecture-specific environment setup script initializes a
|
||||
suitable cross-toolchain development environment.
|
||||
|
||||
During this setup, locations for the compiler, QEMU scripts, QEMU
|
||||
binary, a special version of ``pkgconfig`` and other useful utilities
|
||||
are added to the ``PATH`` variable. Also, variables to assist
|
||||
``pkgconfig`` and ``autotools`` are also defined so that, for example,
|
||||
``configure.sh`` can find pre-generated test results for tests that need
|
||||
target hardware on which to run. You can see the "`Setting Up the
|
||||
Cross-Development
|
||||
Environment <#setting-up-the-cross-development-environment>`__" section
|
||||
for the list of cross-toolchain environment variables established by the
|
||||
script.
|
||||
|
||||
Collectively, these conditions allow you to easily use the toolchain
|
||||
outside of the OpenEmbedded build environment on both Autotools-based
|
||||
projects and Makefile-based projects. This chapter provides information
|
||||
for both these types of projects.
|
||||
|
||||
Autotools-Based Projects
|
||||
========================
|
||||
|
||||
Once you have a suitable cross-toolchain installed, it is very easy to
|
||||
develop a project outside of the OpenEmbedded build system. This section
|
||||
presents a simple "Helloworld" example that shows how to set up,
|
||||
compile, and run the project.
|
||||
|
||||
Creating and Running a Project Based on GNU Autotools
|
||||
-----------------------------------------------------
|
||||
|
||||
Follow these steps to create a simple Autotools-based project:
|
||||
|
||||
1. *Create your directory:* Create a clean directory for your project
|
||||
and then make that directory your working location: $ mkdir
|
||||
$HOME/helloworld $ cd $HOME/helloworld
|
||||
|
||||
2. *Populate the directory:* Create ``hello.c``, ``Makefile.am``, and
|
||||
``configure.in`` files as follows:
|
||||
|
||||
- For ``hello.c``, include these lines: #include <stdio.h> main() {
|
||||
printf("Hello World!\n"); }
|
||||
|
||||
- For ``Makefile.am``, include these lines: bin_PROGRAMS = hello
|
||||
hello_SOURCES = hello.c
|
||||
|
||||
- For ``configure.in``, include these lines: AC_INIT(hello.c)
|
||||
AM_INIT_AUTOMAKE(hello,0.1) AC_PROG_CC AC_PROG_INSTALL
|
||||
AC_OUTPUT(Makefile)
|
||||
|
||||
3. *Source the cross-toolchain environment setup file:* Installation of
|
||||
the cross-toolchain creates a cross-toolchain environment setup
|
||||
script in the directory that the ADT was installed. Before you can
|
||||
use the tools to develop your project, you must source this setup
|
||||
script. The script begins with the string "environment-setup" and
|
||||
contains the machine architecture, which is followed by the string
|
||||
"poky-linux". Here is an example that sources a script from the
|
||||
default ADT installation directory that uses the 32-bit Intel x86
|
||||
Architecture and the DISTRO_NAME Yocto Project release: $ source
|
||||
/opt/poky/DISTRO/environment-setup-i586-poky-linux
|
||||
|
||||
4. *Generate the local aclocal.m4 files and create the configure
|
||||
script:* The following GNU Autotools generate the local
|
||||
``aclocal.m4`` files and create the configure script: $ aclocal $
|
||||
autoconf
|
||||
|
||||
5. *Generate files needed by GNU coding standards:* GNU coding
|
||||
standards require certain files in order for the project to be
|
||||
compliant. This command creates those files: $ touch NEWS README
|
||||
AUTHORS ChangeLog
|
||||
|
||||
6. *Generate the configure file:* This command generates the
|
||||
``configure``: $ automake -a
|
||||
|
||||
7. *Cross-compile the project:* This command compiles the project using
|
||||
the cross-compiler. The
|
||||
:term:`CONFIGURE_FLAGS`
|
||||
environment variable provides the minimal arguments for GNU
|
||||
configure: $ ./configure ${CONFIGURE_FLAGS}
|
||||
|
||||
8. *Make and install the project:* These two commands generate and
|
||||
install the project into the destination directory: $ make $ make
|
||||
install DESTDIR=./tmp
|
||||
|
||||
9. *Verify the installation:* This command is a simple way to verify
|
||||
the installation of your project. Running the command prints the
|
||||
architecture on which the binary file can run. This architecture
|
||||
should be the same architecture that the installed cross-toolchain
|
||||
supports. $ file ./tmp/usr/local/bin/hello
|
||||
|
||||
10. *Execute your project:* To execute the project in the shell, simply
|
||||
enter the name. You could also copy the binary to the actual target
|
||||
hardware and run the project there as well: $ ./hello As expected,
|
||||
the project displays the "Hello World!" message.
|
||||
|
||||
Passing Host Options
|
||||
--------------------
|
||||
|
||||
For an Autotools-based project, you can use the cross-toolchain by just
|
||||
passing the appropriate host option to ``configure.sh``. The host option
|
||||
you use is derived from the name of the environment setup script found
|
||||
in the directory in which you installed the cross-toolchain. For
|
||||
example, the host option for an ARM-based target that uses the GNU EABI
|
||||
is ``armv5te-poky-linux-gnueabi``. You will notice that the name of the
|
||||
script is ``environment-setup-armv5te-poky-linux-gnueabi``. Thus, the
|
||||
following command works to update your project and rebuild it using the
|
||||
appropriate cross-toolchain tools: $ ./configure
|
||||
--host=armv5te-poky-linux-gnueabi \\ --with-libtool-sysroot=sysroot_dir
|
||||
|
||||
.. note::
|
||||
|
||||
If the
|
||||
configure
|
||||
script results in problems recognizing the
|
||||
--with-libtool-sysroot=
|
||||
sysroot-dir
|
||||
option, regenerate the script to enable the support by doing the
|
||||
following and then run the script again:
|
||||
::
|
||||
|
||||
$ libtoolize --automake
|
||||
$ aclocal -I ${OECORE_NATIVE_SYSROOT}/usr/share/aclocal \
|
||||
[-I dir_containing_your_project-specific_m4_macros]
|
||||
$ autoconf
|
||||
$ autoheader
|
||||
$ automake -a
|
||||
|
||||
|
||||
Makefile-Based Projects
|
||||
=======================
|
||||
|
||||
For Makefile-based projects, the cross-toolchain environment variables
|
||||
established by running the cross-toolchain environment setup script are
|
||||
subject to general ``make`` rules.
|
||||
|
||||
To illustrate this, consider the following four cross-toolchain
|
||||
environment variables:
|
||||
:term:`CC`\ =i586-poky-linux-gcc -m32
|
||||
-march=i586 --sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
|
||||
:term:`LD`\ =i586-poky-linux-ld
|
||||
--sysroot=/opt/poky/1.8/sysroots/i586-poky-linux
|
||||
:term:`CFLAGS`\ =-O2 -pipe -g
|
||||
-feliminate-unused-debug-types
|
||||
:term:`CXXFLAGS`\ =-O2 -pipe -g
|
||||
-feliminate-unused-debug-types Now, consider the following three cases:
|
||||
|
||||
- *Case 1 - No Variables Set in the ``Makefile``:* Because these
|
||||
variables are not specifically set in the ``Makefile``, the variables
|
||||
retain their values based on the environment.
|
||||
|
||||
- *Case 2 - Variables Set in the ``Makefile``:* Specifically setting
|
||||
variables in the ``Makefile`` during the build results in the
|
||||
environment settings of the variables being overwritten.
|
||||
|
||||
- *Case 3 - Variables Set when the ``Makefile`` is Executed from the
|
||||
Command Line:* Executing the ``Makefile`` from the command line
|
||||
results in the variables being overwritten with command-line content
|
||||
regardless of what is being set in the ``Makefile``. In this case,
|
||||
environment variables are not considered unless you use the "-e" flag
|
||||
during the build: $ make -e file If you use this flag, then the
|
||||
environment values of the variables override any variables
|
||||
specifically set in the ``Makefile``.
|
||||
|
||||
.. note::
|
||||
|
||||
For the list of variables set up by the cross-toolchain environment
|
||||
setup script, see the "
|
||||
Setting Up the Cross-Development Environment
|
||||
" section.
|
|
@ -1,138 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
*****************************************
|
||||
The Application Development Toolkit (ADT)
|
||||
*****************************************
|
||||
|
||||
Part of the Yocto Project development solution is an Application
|
||||
Development Toolkit (ADT). The ADT provides you with a custom-built,
|
||||
cross-development platform suited for developing a user-targeted product
|
||||
application.
|
||||
|
||||
Fundamentally, the ADT consists of the following:
|
||||
|
||||
- An architecture-specific cross-toolchain and matching sysroot both
|
||||
built by the :term:`OpenEmbedded Build System`.
|
||||
The toolchain and
|
||||
sysroot are based on a `Metadata <&YOCTO_DOCS_DEV_URL;#metadata>`__
|
||||
configuration and extensions, which allows you to cross-develop on
|
||||
the host machine for the target hardware.
|
||||
|
||||
- The Eclipse IDE Yocto Plug-in.
|
||||
|
||||
- The Quick EMUlator (QEMU), which lets you simulate target hardware.
|
||||
|
||||
- Various user-space tools that greatly enhance your application
|
||||
development experience.
|
||||
|
||||
The Cross-Development Toolchain
|
||||
===============================
|
||||
|
||||
The `Cross-Development
|
||||
Toolchain <&YOCTO_DOCS_DEV_URL;#cross-development-toolchain>`__ consists
|
||||
of a cross-compiler, cross-linker, and cross-debugger that are used to
|
||||
develop user-space applications for targeted hardware. This toolchain is
|
||||
created either by running the ADT Installer script, a toolchain
|
||||
installer script, or through a :term:`Build Directory`
|
||||
that is based on
|
||||
your Metadata configuration or extension for your targeted device. The
|
||||
cross-toolchain works with a matching target sysroot.
|
||||
|
||||
Sysroot
|
||||
=======
|
||||
|
||||
The matching target sysroot contains needed headers and libraries for
|
||||
generating binaries that run on the target architecture. The sysroot is
|
||||
based on the target root filesystem image that is built by the
|
||||
OpenEmbedded build system and uses the same Metadata configuration used
|
||||
to build the cross-toolchain.
|
||||
|
||||
.. _eclipse-overview:
|
||||
|
||||
Eclipse Yocto Plug-in
|
||||
=====================
|
||||
|
||||
The Eclipse IDE is a popular development environment and it fully
|
||||
supports development using the Yocto Project. When you install and
|
||||
configure the Eclipse Yocto Project Plug-in into the Eclipse IDE, you
|
||||
maximize your Yocto Project experience. Installing and configuring the
|
||||
Plug-in results in an environment that has extensions specifically
|
||||
designed to let you more easily develop software. These extensions allow
|
||||
for cross-compilation, deployment, and execution of your output into a
|
||||
QEMU emulation session. You can also perform cross-debugging and
|
||||
profiling. The environment also supports a suite of tools that allows
|
||||
you to perform remote profiling, tracing, collection of power data,
|
||||
collection of latency data, and collection of performance data.
|
||||
|
||||
For information about the application development workflow that uses the
|
||||
Eclipse IDE and for a detailed example of how to install and configure
|
||||
the Eclipse Yocto Project Plug-in, see the "`Working Within
|
||||
Eclipse <&YOCTO_DOCS_DEV_URL;#adt-eclipse>`__" section of the Yocto
|
||||
Project Development Manual.
|
||||
|
||||
The QEMU Emulator
|
||||
=================
|
||||
|
||||
The QEMU emulator allows you to simulate your hardware while running
|
||||
your application or image. QEMU is made available a number of ways:
|
||||
|
||||
- If you use the ADT Installer script to install ADT, you can specify
|
||||
whether or not to install QEMU.
|
||||
|
||||
- If you have cloned the ``poky`` Git repository to create a
|
||||
:term:`Source Directory` and you have
|
||||
sourced the environment setup script, QEMU is installed and
|
||||
automatically available.
|
||||
|
||||
- If you have downloaded a Yocto Project release and unpacked it to
|
||||
create a :term:`Source Directory`
|
||||
and you have sourced the environment setup script, QEMU is installed
|
||||
and automatically available.
|
||||
|
||||
- If you have installed the cross-toolchain tarball and you have
|
||||
sourced the toolchain's setup environment script, QEMU is also
|
||||
installed and automatically available.
|
||||
|
||||
User-Space Tools
|
||||
================
|
||||
|
||||
User-space tools are included as part of the Yocto Project. You will
|
||||
find these tools helpful during development. The tools include
|
||||
LatencyTOP, PowerTOP, OProfile, Perf, SystemTap, and Lttng-ust. These
|
||||
tools are common development tools for the Linux platform.
|
||||
|
||||
- *LatencyTOP:* LatencyTOP focuses on latency that causes skips in
|
||||
audio, stutters in your desktop experience, or situations that
|
||||
overload your server even when you have plenty of CPU power left.
|
||||
|
||||
- *PowerTOP:* Helps you determine what software is using the most
|
||||
power. You can find out more about PowerTOP at
|
||||
https://01.org/powertop/.
|
||||
|
||||
- *OProfile:* A system-wide profiler for Linux systems that is capable
|
||||
of profiling all running code at low overhead. You can find out more
|
||||
about OProfile at http://oprofile.sourceforge.net/about/. For
|
||||
examples on how to setup and use this tool, see the
|
||||
"`OProfile <&YOCTO_DOCS_PROF_URL;#profile-manual-oprofile>`__"
|
||||
section in the Yocto Project Profiling and Tracing Manual.
|
||||
|
||||
- *Perf:* Performance counters for Linux used to keep track of certain
|
||||
types of hardware and software events. For more information on these
|
||||
types of counters see https://perf.wiki.kernel.org/. For
|
||||
examples on how to setup and use this tool, see the
|
||||
"`perf <&YOCTO_DOCS_PROF_URL;#profile-manual-perf>`__" section in the
|
||||
Yocto Project Profiling and Tracing Manual.
|
||||
|
||||
- *SystemTap:* A free software infrastructure that simplifies
|
||||
information gathering about a running Linux system. This information
|
||||
helps you diagnose performance or functional problems. SystemTap is
|
||||
not available as a user-space tool through the Eclipse IDE Yocto
|
||||
Plug-in. See http://sourceware.org/systemtap for more
|
||||
information on SystemTap. For examples on how to setup and use this
|
||||
tool, see the
|
||||
"`SystemTap <&YOCTO_DOCS_PROF_URL;#profile-manual-systemtap>`__"
|
||||
section in the Yocto Project Profiling and Tracing Manual.
|
||||
|
||||
- *Lttng-ust:* A User-space Tracer designed to provide detailed
|
||||
information on user-space activity. See http://lttng.org/ust
|
||||
for more information on Lttng-ust.
|
|
@ -1,24 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
************
|
||||
Introduction
|
||||
************
|
||||
|
||||
Welcome to the Yocto Project Application Developer's Guide. This manual
|
||||
provides information that lets you begin developing applications using
|
||||
the Yocto Project.
|
||||
|
||||
The Yocto Project provides an application development environment based
|
||||
on an Application Development Toolkit (ADT) and the availability of
|
||||
stand-alone cross-development toolchains and other tools. This manual
|
||||
describes the ADT and how you can configure and install it, how to
|
||||
access and use the cross-development toolchains, how to customize the
|
||||
development packages installation, how to use command-line development
|
||||
for both Autotools-based and Makefile-based projects, and an
|
||||
introduction to the Eclipse IDE Yocto Plug-in.
|
||||
|
||||
.. note::
|
||||
|
||||
The ADT is distribution-neutral and does not require the Yocto
|
||||
Project reference distribution, which is called Poky. This manual,
|
||||
however, uses examples that use the Poky distribution.
|
|
@ -1,17 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
===========================================
|
||||
Yocto Project Application Developer's Guide
|
||||
===========================================
|
||||
|
||||
|
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:numbered:
|
||||
|
||||
adt-manual-intro
|
||||
adt-intro
|
||||
adt-prepare
|
||||
adt-package
|
||||
adt-command
|
|
@ -1,70 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
************************************************************
|
||||
Optionally Customizing the Development Packages Installation
|
||||
************************************************************
|
||||
|
||||
Because the Yocto Project is suited for embedded Linux development, it
|
||||
is likely that you will need to customize your development packages
|
||||
installation. For example, if you are developing a minimal image, then
|
||||
you might not need certain packages (e.g. graphics support packages).
|
||||
Thus, you would like to be able to remove those packages from your
|
||||
target sysroot.
|
||||
|
||||
Package Management Systems
|
||||
==========================
|
||||
|
||||
The OpenEmbedded build system supports the generation of sysroot files
|
||||
using three different Package Management Systems (PMS):
|
||||
|
||||
- *OPKG:* A less well known PMS whose use originated in the
|
||||
OpenEmbedded and OpenWrt embedded Linux projects. This PMS works with
|
||||
files packaged in an ``.ipk`` format. See
|
||||
http://en.wikipedia.org/wiki/Opkg for more information about
|
||||
OPKG.
|
||||
|
||||
- *RPM:* A more widely known PMS intended for GNU/Linux distributions.
|
||||
This PMS works with files packaged in an ``.rpm`` format. The build
|
||||
system currently installs through this PMS by default. See
|
||||
http://en.wikipedia.org/wiki/RPM_Package_Manager for more
|
||||
information about RPM.
|
||||
|
||||
- *Debian:* The PMS for Debian-based systems is built on many PMS
|
||||
tools. The lower-level PMS tool ``dpkg`` forms the base of the Debian
|
||||
PMS. For information on dpkg see
|
||||
http://en.wikipedia.org/wiki/Dpkg.
|
||||
|
||||
Configuring the PMS
|
||||
===================
|
||||
|
||||
Whichever PMS you are using, you need to be sure that the
|
||||
:term:`PACKAGE_CLASSES`
|
||||
variable in the ``conf/local.conf`` file is set to reflect that system.
|
||||
The first value you choose for the variable specifies the package file
|
||||
format for the root filesystem at sysroot. Additional values specify
|
||||
additional formats for convenience or testing. See the
|
||||
``conf/local.conf`` configuration file for details.
|
||||
|
||||
.. note::
|
||||
|
||||
For build performance information related to the PMS, see the "
|
||||
package.bbclass
|
||||
" section in the Yocto Project Reference Manual.
|
||||
|
||||
As an example, consider a scenario where you are using OPKG and you want
|
||||
to add the ``libglade`` package to the target sysroot.
|
||||
|
||||
First, you should generate the IPK file for the ``libglade`` package and
|
||||
add it into a working ``opkg`` repository. Use these commands: $ bitbake
|
||||
libglade $ bitbake package-index
|
||||
|
||||
Next, source the cross-toolchain environment setup script found in the
|
||||
:term:`Source Directory`. Follow
|
||||
that by setting up the installation destination to point to your sysroot
|
||||
as sysroot_dir. Finally, have an OPKG configuration file conf_file that
|
||||
corresponds to the ``opkg`` repository you have just created. The
|
||||
following command forms should now work: $ opkg-cl –f conf_file -o
|
||||
sysroot_dir update $ opkg-cl –f cconf_file -o sysroot_dir \\
|
||||
--force-overwrite install libglade $ opkg-cl –f cconf_file -o
|
||||
sysroot_dir \\ --force-overwrite install libglade-dbg $ opkg-cl –f
|
||||
conf_file> -osysroot_dir> \\ --force-overwrite install libglade-dev
|
|
@ -1,752 +0,0 @@
|
|||
.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
|
||||
|
||||
*************************************
|
||||
Preparing for Application Development
|
||||
*************************************
|
||||
|
||||
In order to develop applications, you need set up your host development
|
||||
system. Several ways exist that allow you to install cross-development
|
||||
tools, QEMU, the Eclipse Yocto Plug-in, and other tools. This chapter
|
||||
describes how to prepare for application development.
|
||||
|
||||
.. _installing-the-adt:
|
||||
|
||||
Installing the ADT and Toolchains
|
||||
=================================
|
||||
|
||||
The following list describes installation methods that set up varying
|
||||
degrees of tool availability on your system. Regardless of the
|
||||
installation method you choose, you must ``source`` the cross-toolchain
|
||||
environment setup script, which establishes several key environment
|
||||
variables, before you use a toolchain. See the "`Setting Up the
|
||||
Cross-Development
|
||||
Environment <#setting-up-the-cross-development-environment>`__" section
|
||||
for more information.
|
||||
|
||||
.. note::
|
||||
|
||||
Avoid mixing installation methods when installing toolchains for
|
||||
different architectures. For example, avoid using the ADT Installer
|
||||
to install some toolchains and then hand-installing cross-development
|
||||
toolchains by running the toolchain installer for different
|
||||
architectures. Mixing installation methods can result in situations
|
||||
where the ADT Installer becomes unreliable and might not install the
|
||||
toolchain.
|
||||
|
||||
If you must mix installation methods, you might avoid problems by
|
||||
deleting ``/var/lib/opkg``, thus purging the ``opkg`` package
|
||||
metadata.
|
||||
|
||||
- *Use the ADT installer script:* This method is the recommended way to
|
||||
install the ADT because it automates much of the process for you. For
|
||||
example, you can configure the installation to install the QEMU
|
||||
emulator and the user-space NFS, specify which root filesystem
|
||||
profiles to download, and define the target sysroot location.
|
||||
|
||||
- *Use an existing toolchain:* Using this method, you select and
|
||||
download an architecture-specific toolchain installer and then run
|
||||
the script to hand-install the toolchain. If you use this method, you
|
||||
just get the cross-toolchain and QEMU - you do not get any of the
|
||||
other mentioned benefits had you run the ADT Installer script.
|
||||
|
||||
- *Use the toolchain from within the Build Directory:* If you already
|
||||
have a :term:`Build Directory`,
|
||||
you can build the cross-toolchain within the directory. However, like
|
||||
the previous method mentioned, you only get the cross-toolchain and
|
||||
QEMU - you do not get any of the other benefits without taking
|
||||
separate steps.
|
||||
|
||||
Using the ADT Installer
|
||||
-----------------------
|
||||
|
||||
To run the ADT Installer, you need to get the ADT Installer tarball, be
|
||||
sure you have the necessary host development packages that support the
|
||||
ADT Installer, and then run the ADT Installer Script.
|
||||
|
||||
For a list of the host packages needed to support ADT installation and
|
||||
use, see the "ADT Installer Extras" lists in the "`Required Packages for
|
||||
the Host Development
|
||||
System <&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system>`__"
|
||||
section of the Yocto Project Reference Manual.
|
||||
|
||||
Getting the ADT Installer Tarball
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ADT Installer is contained in the ADT Installer tarball. You can get
|
||||
the tarball using either of these methods:
|
||||
|
||||
- *Download the Tarball:* You can download the tarball from
|
||||
` <&YOCTO_ADTINSTALLER_DL_URL;>`__ into any directory.
|
||||
|
||||
- *Build the Tarball:* You can use
|
||||
:term:`BitBake` to generate the
|
||||
tarball inside an existing :term:`Build Directory`.
|
||||
|
||||
If you use BitBake to generate the ADT Installer tarball, you must
|
||||
``source`` the environment setup script
|
||||
(````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
|
||||
```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
|
||||
located in the Source Directory before running the ``bitbake``
|
||||
command that creates the tarball.
|
||||
|
||||
The following example commands establish the
|
||||
:term:`Source Directory`, check out the
|
||||
current release branch, set up the build environment while also
|
||||
creating the default Build Directory, and run the ``bitbake`` command
|
||||
that results in the tarball
|
||||
``poky/build/tmp/deploy/sdk/adt_installer.tar.bz2``:
|
||||
|
||||
.. note::
|
||||
|
||||
Before using BitBake to build the ADT tarball, be sure to make
|
||||
sure your
|
||||
local.conf
|
||||
file is properly configured. See the "
|
||||
User Configuration
|
||||
" section in the Yocto Project Reference Manual for general
|
||||
configuration information.
|
||||
|
||||
$ cd ~ $ git clone git://git.yoctoproject.org/poky $ cd poky $ git
|
||||
checkout -b DISTRO_NAME origin/DISTRO_NAME $ source oe-init-build-env $
|
||||
bitbake adt-installer
|
||||
|
||||
Configuring and Running the ADT Installer Script
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Before running the ADT Installer script, you need to unpack the tarball.
|
||||
You can unpack the tarball in any directory you wish. For example, this
|
||||
command copies the ADT Installer tarball from where it was built into
|
||||
the home directory and then unpacks the tarball into a top-level
|
||||
directory named ``adt-installer``: $ cd ~ $ cp
|
||||
poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME $ tar -xjf
|
||||
adt_installer.tar.bz2 Unpacking it creates the directory
|
||||
``adt-installer``, which contains the ADT Installer script
|
||||
(``adt_installer``) and its configuration file (``adt_installer.conf``).
|
||||
|
||||
Before you run the script, however, you should examine the ADT Installer
|
||||
configuration file and be sure you are going to get what you want. Your
|
||||
configurations determine which kernel and filesystem image are
|
||||
downloaded.
|
||||
|
||||
The following list describes the configurations you can define for the
|
||||
ADT Installer. For configuration values and restrictions, see the
|
||||
comments in the ``adt-installer.conf`` file:
|
||||
|
||||
- ``YOCTOADT_REPO``: This area includes the IPKG-based packages and the
|
||||
root filesystem upon which the installation is based. If you want to
|
||||
set up your own IPKG repository pointed to by ``YOCTOADT_REPO``, you
|
||||
need to be sure that the directory structure follows the same layout
|
||||
as the reference directory set up at
|
||||
http://adtrepo.yoctoproject.org. Also, your repository needs
|
||||
to be accessible through HTTP.
|
||||
|
||||
- ``YOCTOADT_TARGETS``: The machine target architectures for which you
|
||||
want to set up cross-development environments.
|
||||
|
||||
- ``YOCTOADT_QEMU``: Indicates whether or not to install the emulator
|
||||
QEMU.
|
||||
|
||||
- ``YOCTOADT_NFS_UTIL``: Indicates whether or not to install user-mode
|
||||
NFS. If you plan to use the Eclipse IDE Yocto plug-in against QEMU,
|
||||
you should install NFS.
|
||||
|
||||
.. note::
|
||||
|
||||
To boot QEMU images using our userspace NFS server, you need to be
|
||||
running
|
||||
portmap
|
||||
or
|
||||
rpcbind
|
||||
. If you are running
|
||||
rpcbind
|
||||
, you will also need to add the
|
||||
-i
|
||||
option when
|
||||
rpcbind
|
||||
starts up. Please make sure you understand the security
|
||||
implications of doing this. You might also have to modify your
|
||||
firewall settings to allow NFS booting to work.
|
||||
|
||||
- ``YOCTOADT_ROOTFS_``\ arch: The root filesystem images you want to
|
||||
download from the ``YOCTOADT_IPKG_REPO`` repository.
|
||||
|
||||
- ``YOCTOADT_TARGET_SYSROOT_IMAGE_``\ arch: The particular root
|
||||
filesystem used to extract and create the target sysroot. The value
|
||||
of this variable must have been specified with
|
||||
``YOCTOADT_ROOTFS_``\ arch. For example, if you downloaded both
|
||||
``minimal`` and ``sato-sdk`` images by setting
|
||||
``YOCTOADT_ROOTFS_``\ arch to "minimal sato-sdk", then
|
||||
``YOCTOADT_ROOTFS_``\ arch must be set to either "minimal" or
|
||||
"sato-sdk".
|
||||
|
||||
- ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch: The location on the
|
||||
development host where the target sysroot is created.
|
||||
|
||||
After you have configured the ``adt_installer.conf`` file, run the
|
||||
installer using the following command: $ cd adt-installer $
|
||||
./adt_installer Once the installer begins to run, you are asked to enter
|
||||
the location for cross-toolchain installation. The default location is
|
||||
``/opt/poky/``\ release. After either accepting the default location or
|
||||
selecting your own location, you are prompted to run the installation
|
||||
script interactively or in silent mode. If you want to closely monitor
|
||||
the installation, choose "I" for interactive mode rather than "S" for
|
||||
silent mode. Follow the prompts from the script to complete the
|
||||
installation.
|
||||
|
||||
Once the installation completes, the ADT, which includes the
|
||||
cross-toolchain, is installed in the selected installation directory.
|
||||
You will notice environment setup files for the cross-toolchain in the
|
||||
installation directory, and image tarballs in the ``adt-installer``
|
||||
directory according to your installer configurations, and the target
|
||||
sysroot located according to the ``YOCTOADT_TARGET_SYSROOT_LOC_``\ arch
|
||||
variable also in your configuration file.
|
||||
|
||||
.. _using-an-existing-toolchain-tarball:
|
||||
|
||||
Using a Cross-Toolchain Tarball
|
||||
-------------------------------
|
||||
|
||||
If you want to simply install a cross-toolchain by hand, you can do so
|
||||
by running the toolchain installer. The installer includes the pre-built
|
||||
cross-toolchain, the ``runqemu`` script, and support files. If you use
|
||||
this method to install the cross-toolchain, you might still need to
|
||||
install the target sysroot by installing and extracting it separately.
|
||||
For information on how to install the sysroot, see the "`Extracting the
|
||||
Root Filesystem <#extracting-the-root-filesystem>`__" section.
|
||||
|
||||
Follow these steps:
|
||||
|
||||
1. *Get your toolchain installer using one of the following methods:*
|
||||
|
||||
- Go to ` <&YOCTO_TOOLCHAIN_DL_URL;>`__ and find the folder that
|
||||
matches your host development system (i.e. ``i686`` for 32-bit
|
||||
machines or ``x86_64`` for 64-bit machines).
|
||||
|
||||
Go into that folder and download the toolchain installer whose
|
||||
name includes the appropriate target architecture. The toolchains
|
||||
provided by the Yocto Project are based off of the
|
||||
``core-image-sato`` image and contain libraries appropriate for
|
||||
developing against that image. For example, if your host
|
||||
development system is a 64-bit x86 system and you are going to use
|
||||
your cross-toolchain for a 32-bit x86 target, go into the
|
||||
``x86_64`` folder and download the following installer:
|
||||
poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
|
||||
|
||||
- Build your own toolchain installer. For cases where you cannot use
|
||||
an installer from the download area, you can build your own as
|
||||
described in the "`Optionally Building a Toolchain
|
||||
Installer <#optionally-building-a-toolchain-installer>`__"
|
||||
section.
|
||||
|
||||
2. *Once you have the installer, run it to install the toolchain:*
|
||||
|
||||
.. note::
|
||||
|
||||
You must change the permissions on the toolchain installer script
|
||||
so that it is executable.
|
||||
|
||||
The following command shows how to run the installer given a
|
||||
toolchain tarball for a 64-bit x86 development host system and a
|
||||
32-bit x86 target architecture. The example assumes the toolchain
|
||||
installer is located in ``~/Downloads/``. $
|
||||
~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
|
||||
The first thing the installer prompts you for is the directory into
|
||||
which you want to install the toolchain. The default directory used
|
||||
is ``/opt/poky/DISTRO``. If you do not have write permissions for the
|
||||
directory into which you are installing the toolchain, the toolchain
|
||||
installer notifies you and exits. Be sure you have write permissions
|
||||
in the directory and run the installer again.
|
||||
|
||||
When the script finishes, the cross-toolchain is installed. You will
|
||||
notice environment setup files for the cross-toolchain in the
|
||||
installation directory.
|
||||
|
||||
.. _using-the-toolchain-from-within-the-build-tree:
|
||||
|
||||
Using BitBake and the Build Directory
|
||||
-------------------------------------
|
||||
|
||||
A final way of making the cross-toolchain available is to use BitBake to
|
||||
generate the toolchain within an existing :term:`Build Directory`.
|
||||
This method does
|
||||
not install the toolchain into the default ``/opt`` directory. As with
|
||||
the previous method, if you need to install the target sysroot, you must
|
||||
do that separately as well.
|
||||
|
||||
Follow these steps to generate the toolchain into the Build Directory:
|
||||
|
||||
1. *Set up the Build Environment:* Source the OpenEmbedded build
|
||||
environment setup script (i.e.
|
||||
````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
|
||||
```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
|
||||
located in the :term:`Source Directory`.
|
||||
|
||||
2. *Check your Local Configuration File:* At this point, you should be
|
||||
sure that the :term:`MACHINE`
|
||||
variable in the ``local.conf`` file found in the ``conf`` directory
|
||||
of the Build Directory is set for the target architecture. Comments
|
||||
within the ``local.conf`` file list the values you can use for the
|
||||
``MACHINE`` variable. If you do not change the ``MACHINE`` variable,
|
||||
the OpenEmbedded build system uses ``qemux86`` as the default target
|
||||
machine when building the cross-toolchain.
|
||||
|
||||
.. note::
|
||||
|
||||
You can populate the Build Directory with the cross-toolchains for
|
||||
more than a single architecture. You just need to edit the
|
||||
MACHINE
|
||||
variable in the
|
||||
local.conf
|
||||
file and re-run the
|
||||
bitbake
|
||||
command.
|
||||
|
||||
3. *Make Sure Your Layers are Enabled:* Examine the
|
||||
``conf/bblayers.conf`` file and make sure that you have enabled all
|
||||
the compatible layers for your target machine. The OpenEmbedded build
|
||||
system needs to be aware of each layer you want included when
|
||||
building images and cross-toolchains. For information on how to
|
||||
enable a layer, see the "`Enabling Your
|
||||
Layer <&YOCTO_DOCS_DEV_URL;#enabling-your-layer>`__" section in the
|
||||
Yocto Project Development Manual.
|
||||
|
||||
4. *Generate the Cross-Toolchain:* Run ``bitbake meta-ide-support`` to
|
||||
complete the cross-toolchain generation. Once the ``bitbake`` command
|
||||
finishes, the cross-toolchain is generated and populated within the
|
||||
Build Directory. You will notice environment setup files for the
|
||||
cross-toolchain that contain the string "``environment-setup``" in
|
||||
the Build Directory's ``tmp`` folder.
|
||||
|
||||
Be aware that when you use this method to install the toolchain, you
|
||||
still need to separately extract and install the sysroot filesystem.
|
||||
For information on how to do this, see the "`Extracting the Root
|
||||
Filesystem <#extracting-the-root-filesystem>`__" section.
|
||||
|
||||
Setting Up the Cross-Development Environment
|
||||
============================================
|
||||
|
||||
Before you can develop using the cross-toolchain, you need to set up the
|
||||
cross-development environment by sourcing the toolchain's environment
|
||||
setup script. If you used the ADT Installer or hand-installed
|
||||
cross-toolchain, then you can find this script in the directory you
|
||||
chose for installation. For this release, the default installation
|
||||
directory is ````. If you installed the toolchain in the
|
||||
:term:`Build Directory`, you can find the
|
||||
environment setup script for the toolchain in the Build Directory's
|
||||
``tmp`` directory.
|
||||
|
||||
Be sure to run the environment setup script that matches the
|
||||
architecture for which you are developing. Environment setup scripts
|
||||
begin with the string "``environment-setup``" and include as part of
|
||||
their name the architecture. For example, the toolchain environment
|
||||
setup script for a 64-bit IA-based architecture installed in the default
|
||||
installation directory would be the following:
|
||||
YOCTO_ADTPATH_DIR/environment-setup-x86_64-poky-linux When you run the
|
||||
setup script, many environment variables are defined:
|
||||
:term:`SDKTARGETSYSROOT` -
|
||||
The path to the sysroot used for cross-compilation
|
||||
:term:`PKG_CONFIG_PATH` - The
|
||||
path to the target pkg-config files
|
||||
:term:`CONFIG_SITE` - A GNU
|
||||
autoconf site file preconfigured for the target
|
||||
:term:`CC` - The minimal command and
|
||||
arguments to run the C compiler
|
||||
:term:`CXX` - The minimal command and
|
||||
arguments to run the C++ compiler
|
||||
:term:`CPP` - The minimal command and
|
||||
arguments to run the C preprocessor
|
||||
:term:`AS` - The minimal command and
|
||||
arguments to run the assembler :term:`LD`
|
||||
- The minimal command and arguments to run the linker
|
||||
:term:`GDB` - The minimal command and
|
||||
arguments to run the GNU Debugger
|
||||
:term:`STRIP` - The minimal command and
|
||||
arguments to run 'strip', which strips symbols
|
||||
:term:`RANLIB` - The minimal command
|
||||
and arguments to run 'ranlib'
|
||||
:term:`OBJCOPY` - The minimal command
|
||||
and arguments to run 'objcopy'
|
||||
:term:`OBJDUMP` - The minimal command
|
||||
and arguments to run 'objdump' :term:`AR`
|
||||
- The minimal command and arguments to run 'ar'
|
||||
:term:`NM` - The minimal command and
|
||||
arguments to run 'nm'
|
||||
:term:`TARGET_PREFIX` - The
|
||||
toolchain binary prefix for the target tools
|
||||
:term:`CROSS_COMPILE` - The
|
||||
toolchain binary prefix for the target tools
|
||||
:term:`CONFIGURE_FLAGS` - The
|
||||
minimal arguments for GNU configure
|
||||
:term:`CFLAGS` - Suggested C flags
|
||||
:term:`CXXFLAGS` - Suggested C++
|
||||
flags :term:`LDFLAGS` - Suggested
|
||||
linker flags when you use CC to link
|
||||
:term:`CPPFLAGS` - Suggested
|
||||
preprocessor flags
|
||||
|
||||
Securing Kernel and Filesystem Images
|
||||
=====================================
|
||||
|
||||
You will need to have a kernel and filesystem image to boot using your
|
||||
hardware or the QEMU emulator. Furthermore, if you plan on booting your
|
||||
image using NFS or you want to use the root filesystem as the target
|
||||
sysroot, you need to extract the root filesystem.
|
||||
|
||||
Getting the Images
|
||||
------------------
|
||||
|
||||
To get the kernel and filesystem images, you either have to build them
|
||||
or download pre-built versions. For an example of how to build these
|
||||
images, see the "`Buiding
|
||||
Images <&YOCTO_DOCS_QS_URL;#qs-buiding-images>`__" section of the Yocto
|
||||
Project Quick Start. For an example of downloading pre-build versions,
|
||||
see the "`Example Using Pre-Built Binaries and
|
||||
QEMU <#using-pre-built>`__" section.
|
||||
|
||||
The Yocto Project ships basic kernel and filesystem images for several
|
||||
architectures (``x86``, ``x86-64``, ``mips``, ``powerpc``, and ``arm``)
|
||||
that you can use unaltered in the QEMU emulator. These kernel images
|
||||
reside in the release area - ` <&YOCTO_MACHINES_DL_URL;>`__ and are
|
||||
ideal for experimentation using Yocto Project. For information on the
|
||||
image types you can build using the OpenEmbedded build system, see the
|
||||
":ref:`ref-manual/ref-images:Images`" chapter in the Yocto
|
||||
Project Reference Manual.
|
||||
|
||||
If you are planning on developing against your image and you are not
|
||||
building or using one of the Yocto Project development images (e.g.
|
||||
``core-image-*-dev``), you must be sure to include the development
|
||||
packages as part of your image recipe.
|
||||
|
||||
If you plan on remotely deploying and debugging your application from
|
||||
within the Eclipse IDE, you must have an image that contains the Yocto
|
||||
Target Communication Framework (TCF) agent (``tcf-agent``). You can do
|
||||
this by including the ``eclipse-debug`` image feature.
|
||||
|
||||
.. note::
|
||||
|
||||
See the "
|
||||
Image Features
|
||||
" section in the Yocto Project Reference Manual for information on
|
||||
image features.
|
||||
|
||||
To include the ``eclipse-debug`` image feature, modify your
|
||||
``local.conf`` file in the :term:`Build Directory`
|
||||
so that the
|
||||
:term:`EXTRA_IMAGE_FEATURES`
|
||||
variable includes the "eclipse-debug" feature. After modifying the
|
||||
configuration file, you can rebuild the image. Once the image is
|
||||
rebuilt, the ``tcf-agent`` will be included in the image and is launched
|
||||
automatically after the boot.
|
||||
|
||||
Extracting the Root Filesystem
|
||||
------------------------------
|
||||
|
||||
If you install your toolchain by hand or build it using BitBake and you
|
||||
need a root filesystem, you need to extract it separately. If you use
|
||||
the ADT Installer to install the ADT, the root filesystem is
|
||||
automatically extracted and installed.
|
||||
|
||||
Here are some cases where you need to extract the root filesystem:
|
||||
|
||||
- You want to boot the image using NFS.
|
||||
|
||||
- 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.
|
||||
|
||||
- You want to develop your target application using the root filesystem
|
||||
as the target sysroot.
|
||||
|
||||
To extract the root filesystem, first ``source`` the cross-development
|
||||
environment setup script to establish necessary environment variables.
|
||||
If you built the toolchain in the Build Directory, you will find the
|
||||
toolchain environment script in the ``tmp`` directory. If you installed
|
||||
the toolchain by hand, the environment setup script is located in
|
||||
``/opt/poky/DISTRO``.
|
||||
|
||||
After sourcing the environment script, use the ``runqemu-extract-sdk``
|
||||
command and provide the filesystem image.
|
||||
|
||||
Following is an example. The second command sets up the environment. In
|
||||
this case, the setup script is located in the ``/opt/poky/DISTRO``
|
||||
directory. The third command extracts the root filesystem from a
|
||||
previously built filesystem that is located in the ``~/Downloads``
|
||||
directory. Furthermore, this command extracts the root filesystem into
|
||||
the ``qemux86-sato`` directory: $ cd ~ $ source
|
||||
/opt/poky/DISTRO/environment-setup-i586-poky-linux $ runqemu-extract-sdk
|
||||
\\ ~/Downloads/core-image-sato-sdk-qemux86-2011091411831.rootfs.tar.bz2
|
||||
\\ $HOME/qemux86-sato You could now point to the target sysroot at
|
||||
``qemux86-sato``.
|
||||
|
||||
Optionally Building a Toolchain Installer
|
||||
=========================================
|
||||
|
||||
As an alternative to locating and downloading a toolchain installer, you
|
||||
can build the toolchain installer if you have a :term:`Build Directory`.
|
||||
|
||||
.. note::
|
||||
|
||||
Although not the preferred method, it is also possible to use
|
||||
bitbake meta-toolchain
|
||||
to build the toolchain installer. If you do use this method, you must
|
||||
separately install and extract the target sysroot. For information on
|
||||
how to install the sysroot, see the "
|
||||
Extracting the Root Filesystem
|
||||
" section.
|
||||
|
||||
To build the toolchain installer and populate the SDK image, use the
|
||||
following command: $ bitbake image -c populate_sdk The command results
|
||||
in a toolchain installer that contains the sysroot that matches your
|
||||
target root filesystem.
|
||||
|
||||
Another powerful feature is that the toolchain is completely
|
||||
self-contained. The binaries are linked against their own copy of
|
||||
``libc``, which results in no dependencies on the target system. To
|
||||
achieve this, the pointer to the dynamic loader is configured at install
|
||||
time since that path cannot be dynamically altered. This is the reason
|
||||
for a wrapper around the ``populate_sdk`` archive.
|
||||
|
||||
Another feature is that only one set of cross-canadian toolchain
|
||||
binaries are produced per architecture. This feature takes advantage of
|
||||
the fact that the target hardware can be passed to ``gcc`` as a set of
|
||||
compiler options. Those options are set up by the environment script and
|
||||
contained in variables such as :term:`CC`
|
||||
and :term:`LD`. This reduces the space
|
||||
needed for the tools. Understand, however, that a sysroot is still
|
||||
needed for every target since those binaries are target-specific.
|
||||
|
||||
Remember, before using any BitBake command, you must source the build
|
||||
environment setup script (i.e.
|
||||
````` <&YOCTO_DOCS_REF_URL;#structure-core-script>`__ or
|
||||
```oe-init-build-env-memres`` <&YOCTO_DOCS_REF_URL;#structure-memres-core-script>`__)
|
||||
located in the Source Directory and you must make sure your
|
||||
``conf/local.conf`` variables are correct. In particular, you need to be
|
||||
sure the :term:`MACHINE` variable
|
||||
matches the architecture for which you are building and that the
|
||||
:term:`SDKMACHINE` variable is
|
||||
correctly set 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).
|
||||
|
||||
When the ``bitbake`` command completes, the toolchain installer will be
|
||||
in ``tmp/deploy/sdk`` in the Build Directory.
|
||||
|
||||
.. note::
|
||||
|
||||
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 image has the appropriate static development
|
||||
libraries. Use the
|
||||
IMAGE_INSTALL
|
||||
variable inside your
|
||||
local.conf
|
||||
file to install the appropriate library packages. Following is an
|
||||
example using
|
||||
glibc
|
||||
static development libraries:
|
||||
::
|
||||
|
||||
IMAGE_INSTALL_append = " glibc-staticdev"
|
||||
|
||||
|
||||
Optionally Using an External Toolchain
|
||||
======================================
|
||||
|
||||
You might want to use an external toolchain as part of your development.
|
||||
If this is the case, the fundamental steps you need to accomplish are as
|
||||
follows:
|
||||
|
||||
- Understand where the installed toolchain resides. For cases where you
|
||||
need to build the external toolchain, you would need to take separate
|
||||
steps to build and install the toolchain.
|
||||
|
||||
- Make sure you add the layer that contains the toolchain to your
|
||||
``bblayers.conf`` file through the
|
||||
:term:`BBLAYERS` variable.
|
||||
|
||||
- Set the
|
||||
:term:`EXTERNAL_TOOLCHAIN`
|
||||
variable in your ``local.conf`` file to the location in which you
|
||||
installed the toolchain.
|
||||
|
||||
A good example of an external toolchain used with the Yocto Project is
|
||||
Mentor Graphics Sourcery G++ Toolchain. You can see information on how
|
||||
to use that particular layer in the ``README`` file at
|
||||
http://github.com/MentorEmbedded/meta-sourcery/. You can find
|
||||
further information by reading about the
|
||||
:term:`TCMODE` variable in the Yocto
|
||||
Project Reference Manual's variable glossary.
|
||||
|
||||
.. _using-pre-built:
|
||||
|
||||
Example Using Pre-Built Binaries and QEMU
|
||||
=========================================
|
||||
|
||||
If hardware, libraries and services are stable, you can get started by
|
||||
using a pre-built binary of the filesystem image, kernel, and toolchain
|
||||
and run it using the QEMU emulator. This scenario is useful for
|
||||
developing application software.
|
||||
|
||||
|Using a Pre-Built Image|
|
||||
|
||||
For this scenario, you need to do several things:
|
||||
|
||||
- Install the appropriate stand-alone toolchain tarball.
|
||||
|
||||
- Download the pre-built image that will boot with QEMU. You need to be
|
||||
sure to get the QEMU image that matches your target machine's
|
||||
architecture (e.g. x86, ARM, etc.).
|
||||
|
||||
- Download the filesystem image for your target machine's architecture.
|
||||
|
||||
- Set up the environment to emulate the hardware and then start the
|
||||
QEMU emulator.
|
||||
|
||||
Installing the Toolchain
|
||||
------------------------
|
||||
|
||||
You can download a tarball installer, which includes the pre-built
|
||||
toolchain, the ``runqemu`` script, and support files from the
|
||||
appropriate directory under ` <&YOCTO_TOOLCHAIN_DL_URL;>`__. Toolchains
|
||||
are available for 32-bit and 64-bit x86 development systems from the
|
||||
``i686`` and ``x86_64`` directories, respectively. The toolchains the
|
||||
Yocto Project provides are based off the ``core-image-sato`` image and
|
||||
contain libraries appropriate for developing against that image. Each
|
||||
type of development system supports five or more target architectures.
|
||||
|
||||
The names of the tarball installer scripts are such that a string
|
||||
representing the host system appears first in the filename and then is
|
||||
immediately followed by a string representing the target architecture.
|
||||
|
||||
::
|
||||
|
||||
poky-glibc-host_system-image_type-arch-toolchain-release_version.sh
|
||||
|
||||
Where:
|
||||
host_system is a string representing your development system:
|
||||
|
||||
i686 or x86_64.
|
||||
|
||||
image_type is a string representing the image you wish to
|
||||
develop a Software Development Toolkit (SDK) for use against.
|
||||
The Yocto Project builds toolchain installers using the
|
||||
following BitBake command:
|
||||
|
||||
bitbake core-image-sato -c populate_sdk
|
||||
|
||||
arch is a string representing the tuned target architecture:
|
||||
|
||||
i586, x86_64, powerpc, mips, armv7a or armv5te
|
||||
|
||||
release_version is a string representing the release number of the
|
||||
Yocto Project:
|
||||
|
||||
DISTRO, DISTRO+snapshot
|
||||
|
||||
|
||||
For example, the following toolchain installer is for a 64-bit
|
||||
development host system and a i586-tuned target architecture based off
|
||||
the SDK for ``core-image-sato``:
|
||||
poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
|
||||
|
||||
Toolchains are self-contained and by default are installed into
|
||||
``/opt/poky``. However, when you run the toolchain installer, you can
|
||||
choose an installation directory.
|
||||
|
||||
The following command shows how to run the installer given a toolchain
|
||||
tarball for a 64-bit x86 development host system and a 32-bit x86 target
|
||||
architecture. You must change the permissions on the toolchain installer
|
||||
script so that it is executable.
|
||||
|
||||
The example assumes the toolchain installer is located in
|
||||
``~/Downloads/``.
|
||||
|
||||
.. note::
|
||||
|
||||
If you do not have write permissions for the directory into which you
|
||||
are installing the toolchain, the toolchain installer notifies you
|
||||
and exits. Be sure you have write permissions in the directory and
|
||||
run the installer again.
|
||||
|
||||
$ ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-DISTRO.sh
|
||||
|
||||
For more information on how to install tarballs, see the "`Using a
|
||||
Cross-Toolchain
|
||||
Tarball <&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball>`__"
|
||||
and "`Using BitBake and the Build
|
||||
Directory <&YOCTO_DOCS_ADT_URL;#using-the-toolchain-from-within-the-build-tree>`__"
|
||||
sections in the Yocto Project Application Developer's Guide.
|
||||
|
||||
Downloading the Pre-Built Linux Kernel
|
||||
--------------------------------------
|
||||
|
||||
You can download the pre-built Linux kernel suitable for running in the
|
||||
QEMU emulator from ` <&YOCTO_QEMU_DL_URL;>`__. Be sure to use the kernel
|
||||
that matches the architecture you want to simulate. Download areas exist
|
||||
for the five supported machine architectures: ``qemuarm``, ``qemumips``,
|
||||
``qemuppc``, ``qemux86``, and ``qemux86-64``.
|
||||
|
||||
Most kernel files have one of the following forms: \*zImage-qemuarch.bin
|
||||
vmlinux-qemuarch.bin Where: arch is a string representing the target
|
||||
architecture: x86, x86-64, ppc, mips, or arm.
|
||||
|
||||
You can learn more about downloading a Yocto Project kernel in the
|
||||
"`Yocto Project Kernel <&YOCTO_DOCS_DEV_URL;#local-kernel-files>`__"
|
||||
bulleted item in the Yocto Project Development Manual.
|
||||
|
||||
Downloading the Filesystem
|
||||
--------------------------
|
||||
|
||||
You can also download the filesystem image suitable for your target
|
||||
architecture from ` <&YOCTO_QEMU_DL_URL;>`__. Again, be sure to use the
|
||||
filesystem that matches the architecture you want to simulate.
|
||||
|
||||
The filesystem image has two tarball forms: ``ext3`` and ``tar``. You
|
||||
must use the ``ext3`` form when booting an image using the QEMU
|
||||
emulator. The ``tar`` form can be flattened out in your host development
|
||||
system and used for build purposes with the Yocto Project.
|
||||
core-image-profile-qemuarch.ext3 core-image-profile-qemuarch.tar.bz2
|
||||
Where: profile is the filesystem image's profile: lsb, lsb-dev, lsb-sdk,
|
||||
lsb-qt3, minimal, minimal-dev, sato, sato-dev, or sato-sdk. For
|
||||
information on these types of image profiles, see the
|
||||
":ref:`ref-manual/ref-images:Images`" chapter in the Yocto
|
||||
Project Reference Manual. arch is a string representing the target
|
||||
architecture: x86, x86-64, ppc, mips, or arm.
|
||||
|
||||
Setting Up the Environment and Starting the QEMU Emulator
|
||||
---------------------------------------------------------
|
||||
|
||||
Before you start the QEMU emulator, you need to set up the emulation
|
||||
environment. The following command form sets up the emulation
|
||||
environment. $ source
|
||||
YOCTO_ADTPATH_DIR/environment-setup-arch-poky-linux-if Where: arch is a
|
||||
string representing the target architecture: i586, x86_64, ppc603e,
|
||||
mips, or armv5te. if is a string representing an embedded application
|
||||
binary interface. Not all setup scripts include this string.
|
||||
|
||||
Finally, this command form invokes the QEMU emulator $ runqemu qemuarch
|
||||
kernel-image filesystem-image Where: qemuarch is a string representing
|
||||
the target architecture: qemux86, qemux86-64, qemuppc, qemumips, or
|
||||
qemuarm. kernel-image is the architecture-specific kernel image.
|
||||
filesystem-image is the .ext3 filesystem image.
|
||||
|
||||
Continuing with the example, the following two commands setup the
|
||||
emulation environment and launch QEMU. This example assumes the root
|
||||
filesystem (``.ext3`` file) and the pre-built kernel image file both
|
||||
reside in your home directory. The kernel and filesystem are for a
|
||||
32-bit target architecture. $ cd $HOME $ source
|
||||
YOCTO_ADTPATH_DIR/environment-setup-i586-poky-linux $ runqemu qemux86
|
||||
bzImage-qemux86.bin \\ core-image-sato-qemux86.ext3
|
||||
|
||||
The environment in which QEMU launches varies depending on the
|
||||
filesystem image and on the target architecture. For example, if you
|
||||
source the environment for the ARM target architecture and then boot the
|
||||
minimal QEMU image, the emulator comes up in a new shell in command-line
|
||||
mode. However, if you boot the SDK image, QEMU comes up with a GUI.
|
||||
|
||||
.. note::
|
||||
|
||||
Booting the PPC image results in QEMU launching in the same shell in
|
||||
command-line mode.
|
||||
|
||||
.. |Using a Pre-Built Image| image:: figures/using-a-pre-built-image.png
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
Before Width: | Height: | Size: 12 KiB |
|
@ -53,8 +53,7 @@ templates_path = ['_templates']
|
|||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'boilerplate.rst',
|
||||
'adt-manual/*.rst']
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', 'boilerplate.rst']
|
||||
|
||||
# master document name. The default changed from contents to index. so better
|
||||
# set it ourselves.
|
||||
|
|
|
@ -43,7 +43,6 @@ YOCTO_QEMU_DL_URL : "&YOCTO_MACHINES_DL_URL;/qemu"
|
|||
YOCTO_PYTHON-i686_DL_URL : "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-i686.tar.bz2"
|
||||
YOCTO_PYTHON-x86_64_DL_URL : "&YOCTO_DL_URL;/releases/miscsupport/python-nativesdk-standalone-x86_64.tar.bz2"
|
||||
YOCTO_DOCS_QS_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/yocto-project-qs/yocto-project-qs.html"
|
||||
YOCTO_DOCS_ADT_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/adt-manual/adt-manual.html"
|
||||
YOCTO_DOCS_REF_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/ref-manual/ref-manual.html"
|
||||
YOCTO_DOCS_BSP_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/bsp-guide/bsp-guide.html"
|
||||
YOCTO_DOCS_DEV_URL : "&YOCTO_DOCS_URL;/&YOCTO_DOC_VERSION;/dev-manual/dev-manual.html"
|
||||
|
|
Loading…
Reference in New Issue
Block a user