<!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; ] >

<chapter id='adt-prepare'>

<title>Preparing for Application Development</title>

<para>
    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.
</para>

<section id='installing-the-adt'>
    <title>Installing the ADT and Toolchains</title>

    <para>
        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 <filename>source</filename> the cross-toolchain
        environment setup script, which establishes several key
        environment variables, before you use a toolchain.
        See the
        "<link linkend='setting-up-the-cross-development-environment'>Setting Up the Cross-Development Environment</link>"
        section for more information.
    </para>

    <note>
        <para>
            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.
        </para>

        <para>
            If you must mix installation methods, you might avoid problems by
            deleting <filename>/var/lib/opkg</filename>, thus purging the
            <filename>opkg</filename> package metadata.
        </para>
    </note>

    <para>
        <itemizedlist>
            <listitem><para><emphasis>Use the ADT installer script:</emphasis>
                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.</para></listitem>
            <listitem><para><emphasis>Use an existing toolchain:</emphasis>
                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.</para></listitem>
            <listitem><para><emphasis>Use the toolchain from within the Build Directory:</emphasis>
                If you already have a
                <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
                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.</para></listitem>
        </itemizedlist>
    </para>

    <section id='using-the-adt-installer'>
        <title>Using the ADT Installer</title>

        <para>
            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.
        </para>

        <para>
            For a list of the host packages needed to support ADT installation and use, see the
            "ADT Installer Extras" lists in the
            "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>" section
            of the Yocto Project Reference Manual.
        </para>

        <section id='getting-the-adt-installer-tarball'>
            <title>Getting the ADT Installer Tarball</title>

            <para>
                The ADT Installer is contained in the ADT Installer tarball.
                You can get the tarball using either of these methods:
                <itemizedlist>
                    <listitem><para><emphasis>Download the Tarball:</emphasis>
                        You can download the tarball from
                        <ulink url='&YOCTO_ADTINSTALLER_DL_URL;'></ulink> into
                        any directory.</para></listitem>
                    <listitem><para><emphasis>Build the Tarball:</emphasis>
                        You can use
                        <ulink url='&YOCTO_DOCS_DEV_URL;#bitbake-term'>BitBake</ulink>
                        to generate the tarball inside an existing
                        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
                        </para>
                        <para>If you use BitBake to generate the ADT Installer
                        tarball, you must <filename>source</filename> the
                        environment setup script
                        (<ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
                        or
                        <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>)
                        located in the Source Directory before running the
                        <filename>bitbake</filename> command that creates the
                        tarball.</para>
                        <para>The following example commands establish
                        the
                        <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
                        check out the current release branch, set up the
                        build environment while also creating the default
                        Build Directory, and run the
                        <filename>bitbake</filename> command that results in the
                        tarball
                        <filename>poky/build/tmp/deploy/sdk/adt_installer.tar.bz2</filename>:
                        <note>
                            Before using BitBake to build the ADT tarball, be
                            sure to make sure your
                            <filename>local.conf</filename> file is properly
                            configured.
                            See the
                            "<ulink url='&YOCTO_DOCS_REF_URL;#user-configuration'>User Configuration</ulink>"
                            section in the Yocto Project Reference Manual for
                            general configuration information.
                        </note>
                        <literallayout class='monospaced'>
     $ cd ~
     $ git clone git://git.yoctoproject.org/poky
     $ cd poky
     $ git checkout -b &DISTRO_NAME; origin/&DISTRO_NAME;
     $ source &OE_INIT_FILE;
     $ bitbake adt-installer
                        </literallayout></para></listitem>
                </itemizedlist>
            </para>
        </section>

        <section id='configuring-and-running-the-adt-installer-script'>
            <title>Configuring and Running the ADT Installer Script</title>

            <para>
                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 <filename>adt-installer</filename>:
                <literallayout class='monospaced'>
     $ cd ~
     $ cp poky/build/tmp/deploy/sdk/adt_installer.tar.bz2 $HOME
     $ tar -xjf adt_installer.tar.bz2
                </literallayout>
                Unpacking it creates the directory <filename>adt-installer</filename>,
                which contains the ADT Installer script (<filename>adt_installer</filename>)
                and its configuration file (<filename>adt_installer.conf</filename>).
            </para>

            <para>
                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.
            </para>

            <para>
                The following list describes the configurations you can define for the ADT Installer.
                For configuration values and restrictions, see the comments in
                the <filename>adt-installer.conf</filename> file:

                <itemizedlist>
                    <listitem><para><filename>YOCTOADT_REPO</filename>: 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
                        <filename>YOCTOADT_REPO</filename>, you need to be sure that the
                        directory structure follows the same layout as the reference directory
                        set up at <ulink url='http://adtrepo.yoctoproject.org'></ulink>.
                        Also, your repository needs to be accessible through HTTP.</para></listitem>
                    <listitem><para><filename>YOCTOADT_TARGETS</filename>: The machine
                        target architectures for which you want to set up cross-development
                        environments.</para></listitem>
                    <listitem><para><filename>YOCTOADT_QEMU</filename>: Indicates whether
                        or not to install the emulator QEMU.</para></listitem>
                    <listitem><para><filename>YOCTOADT_NFS_UTIL</filename>: 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 <filename>portmap</filename> or <filename>rpcbind</filename>.
                            If you are running <filename>rpcbind</filename>, you will also need to add the
                            <filename>-i</filename> option when <filename>rpcbind</filename> 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.</note></para></listitem>
                    <listitem><para><filename>YOCTOADT_ROOTFS_</filename><replaceable>arch</replaceable>: The root
                        filesystem images you want to download from the
                        <filename>YOCTOADT_IPKG_REPO</filename> repository.</para></listitem>
                    <listitem><para><filename>YOCTOADT_TARGET_SYSROOT_IMAGE_</filename><replaceable>arch</replaceable>: The
                        particular root filesystem used to extract and create the target sysroot.
                        The value of this variable must have been specified with
                        <filename>YOCTOADT_ROOTFS_</filename><replaceable>arch</replaceable>.
                        For example, if you downloaded both <filename>minimal</filename> and
                        <filename>sato-sdk</filename> images by setting
                        <filename>YOCTOADT_ROOTFS_</filename><replaceable>arch</replaceable>
                        to "minimal sato-sdk", then <filename>YOCTOADT_ROOTFS_</filename><replaceable>arch</replaceable>
                        must be set to either "minimal" or "sato-sdk".
                        </para></listitem>
                    <listitem><para><filename>YOCTOADT_TARGET_SYSROOT_LOC_</filename><replaceable>arch</replaceable>: The
                        location on the development host where the target sysroot is created.
                        </para></listitem>
                </itemizedlist>
            </para>

            <para>
                After you have configured the <filename>adt_installer.conf</filename> file,
                run the installer using the following command:
                <literallayout class='monospaced'>
     $ cd adt-installer
     $ ./adt_installer
                </literallayout>
                Once the installer begins to run, you are asked to enter the
                location for cross-toolchain installation.
                The default location is
                <filename>/opt/poky/</filename><replaceable>release</replaceable>.
                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.
            </para>

            <para>
                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
                <filename>adt-installer</filename> directory according to your
                installer configurations, and the target sysroot located
                according to the
                <filename>YOCTOADT_TARGET_SYSROOT_LOC_</filename><replaceable>arch</replaceable>
                variable also in your configuration file.
            </para>
         </section>
    </section>

    <section id='using-an-existing-toolchain-tarball'>
        <title>Using a Cross-Toolchain Tarball</title>

        <para>
            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
            <filename>runqemu</filename> 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
            "<link linkend='extracting-the-root-filesystem'>Extracting the Root Filesystem</link>" section.
        </para>

        <para>
            Follow these steps:
            <orderedlist>
                <listitem><para><emphasis>Get your toolchain installer using one of the following methods:</emphasis>
                    <itemizedlist>
                        <listitem><para>Go to
                            <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>
                            and find 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>
                            <para>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
                            <filename>core-image-sato</filename> 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 <filename>x86_64</filename>
                            folder and download the following installer:
                            <literallayout class='monospaced'>
     poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
                            </literallayout></para></listitem>
                        <listitem><para>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
                            "<link linkend='optionally-building-a-toolchain-installer'>Optionally Building a Toolchain Installer</link>"
                            section.</para></listitem>
                    </itemizedlist></para></listitem>
                <listitem><para><emphasis>Once you have the installer, run it to install the toolchain:</emphasis>
                    <note>
                        You must change the permissions on the toolchain
                        installer script so that it is executable.
                    </note></para>
                    <para>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 <filename>~/Downloads/</filename>.
                    <literallayout class='monospaced'>
     $ ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
                    </literallayout>
                    The first thing the installer prompts you for is the
                    directory into which you want to install the toolchain.
                    The default directory used is
                    <filename>/opt/poky/&DISTRO;</filename>.
                    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.</para>
                    <para>When the script finishes, the cross-toolchain is
                    installed.
                    You will notice environment setup files for the
                    cross-toolchain in the installation directory.
                    </para></listitem>
            </orderedlist>
        </para>
    </section>

    <section id='using-the-toolchain-from-within-the-build-tree'>
        <title>Using BitBake and the Build Directory</title>

        <para>
            A final way of making the cross-toolchain available is to use BitBake
            to generate the toolchain within an existing
            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
            This method does not install the toolchain into the default
            <filename>/opt</filename> directory.
            As with the previous method, if you need to install the target sysroot, you must
            do that separately as well.
        </para>

        <para>
            Follow these steps to generate the toolchain into the Build Directory:
            <orderedlist>
                <listitem><para><emphasis>Set up the Build Environment:</emphasis>
                    Source the OpenEmbedded build environment setup
                    script (i.e.
                    <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
                    or
                    <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>)
                    located in the
                    <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
                    </para></listitem>
                <listitem><para><emphasis>Check your Local Configuration File:</emphasis>
                    At this point, you should be sure that the
                    <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink> variable
                    in the <filename>local.conf</filename> file found in the
                    <filename>conf</filename> directory of the Build Directory
                    is set for the target architecture.
                    Comments within the <filename>local.conf</filename> file
                    list the values you can use for the
                    <filename>MACHINE</filename> variable.
                    <note>
                        You can populate the Build Directory with the
                        cross-toolchains for more than a single architecture.
                        You just need to edit the <filename>MACHINE</filename>
                        variable in the <filename>local.conf</filename> file and
                        re-run the <filename>bitbake</filename> command.
                    </note></para></listitem>
                <listitem><para><emphasis>Generate the Cross-Toolchain:</emphasis>
                    Run <filename>bitbake meta-ide-support</filename> to
                    complete the cross-toolchain generation.
                    Once the <filename>bitbake</filename> 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
                    "<filename>environment-setup</filename>" in the
                    Build Directory's <filename>tmp</filename> folder.</para>
                    <para>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
                    "<link linkend='extracting-the-root-filesystem'>Extracting the Root Filesystem</link>" section.
                    </para></listitem>
            </orderedlist>
        </para>
    </section>
</section>

<section id='setting-up-the-cross-development-environment'>
    <title>Setting Up the Cross-Development Environment</title>

    <para>
        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
        <filename>&YOCTO_ADTPATH_DIR;</filename>.
        If you installed the toolchain in the
        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
        you can find the environment setup
        script for the toolchain in the Build Directory's <filename>tmp</filename> directory.
    </para>

    <para>
        Be sure to run the environment setup script that matches the
        architecture for which you are developing.
        Environment setup scripts begin with the string
        "<filename>environment-setup</filename>" 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:
        <literallayout class='monospaced'>
     &YOCTO_ADTPATH_DIR;/environment-setup-x86_64-poky-linux
        </literallayout>
        When you run the setup script, many environment variables are
        defined:
        <literallayout class='monospaced'>
     <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKTARGETSYSROOT'><filename>SDKTARGETSYSROOT</filename></ulink> - The path to the sysroot used for cross-compilation
     <ulink url='&YOCTO_DOCS_REF_URL;#var-PKG_CONFIG_PATH'><filename>PKG_CONFIG_PATH</filename></ulink> - The path to the target pkg-config files
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIG_SITE'><filename>CONFIG_SITE</filename></ulink> - A GNU autoconf site file preconfigured for the target
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink> - The minimal command and arguments to run the C compiler
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXX'><filename>CXX</filename></ulink> - The minimal command and arguments to run the C++ compiler
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPP'><filename>CPP</filename></ulink> - The minimal command and arguments to run the C preprocessor
     <ulink url='&YOCTO_DOCS_REF_URL;#var-AS'><filename>AS</filename></ulink> - The minimal command and arguments to run the assembler
     <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink> - The minimal command and arguments to run the linker
     <ulink url='&YOCTO_DOCS_REF_URL;#var-GDB'><filename>GDB</filename></ulink> - The minimal command and arguments to run the GNU Debugger
     <ulink url='&YOCTO_DOCS_REF_URL;#var-STRIP'><filename>STRIP</filename></ulink> - The minimal command and arguments to run 'strip', which strips symbols
     <ulink url='&YOCTO_DOCS_REF_URL;#var-RANLIB'><filename>RANLIB</filename></ulink> - The minimal command and arguments to run 'ranlib'
     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJCOPY'><filename>OBJCOPY</filename></ulink> - The minimal command and arguments to run 'objcopy'
     <ulink url='&YOCTO_DOCS_REF_URL;#var-OBJDUMP'><filename>OBJDUMP</filename></ulink> - The minimal command and arguments to run 'objdump'
     <ulink url='&YOCTO_DOCS_REF_URL;#var-AR'><filename>AR</filename></ulink> - The minimal command and arguments to run 'ar'
     <ulink url='&YOCTO_DOCS_REF_URL;#var-NM'><filename>NM</filename></ulink> - The minimal command and arguments to run 'nm'
     <ulink url='&YOCTO_DOCS_REF_URL;#var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></ulink> - The toolchain binary prefix for the target tools
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CROSS_COMPILE'><filename>CROSS_COMPILE</filename></ulink> - The toolchain binary prefix for the target tools
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CONFIGURE_FLAGS'><filename>CONFIGURE_FLAGS</filename></ulink> - The minimal arguments for GNU configure
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CFLAGS'><filename>CFLAGS</filename></ulink> - Suggested C flags
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CXXFLAGS'><filename>CXXFLAGS</filename></ulink> - Suggested C++ flags
     <ulink url='&YOCTO_DOCS_REF_URL;#var-LDFLAGS'><filename>LDFLAGS</filename></ulink> - Suggested linker flags when you use CC to link
     <ulink url='&YOCTO_DOCS_REF_URL;#var-CPPFLAGS'><filename>CPPFLAGS</filename></ulink> - Suggested preprocessor flags
        </literallayout>
    </para>
</section>

<section id='securing-kernel-and-filesystem-images'>
    <title>Securing Kernel and Filesystem Images</title>

    <para>
        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.
    </para>

    <section id='getting-the-images'>
        <title>Getting the Images</title>

        <para>
            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
            "<ulink url='&YOCTO_DOCS_QS_URL;#qs-buiding-images'>Buiding Images</ulink>"
            section of the Yocto Project Quick Start.
            For an example of downloading pre-build versions, see the
            "<link linkend='using-pre-built'>Example Using Pre-Built Binaries and QEMU</link>"
            section.
        </para>

        <para>
            The Yocto Project ships basic kernel and filesystem images for several
            architectures (<filename>x86</filename>, <filename>x86-64</filename>,
            <filename>mips</filename>, <filename>powerpc</filename>, and <filename>arm</filename>)
            that you can use unaltered in the QEMU emulator.
            These kernel images reside in the release
            area - <ulink url='&YOCTO_MACHINES_DL_URL;'></ulink>
            and are ideal for experimentation using Yocto Project.
            For information on the image types you can build using the OpenEmbedded build system,
            see the
            "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
            chapter in the Yocto Project Reference Manual.
        </para>

        <para>
            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. <filename>core-image-*-dev</filename>), you must be sure to
            include the development packages as part of your image recipe.
        </para>

        <para>
            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
            (<filename>tcf-agent</filename>).
            You can do this by including the <filename>eclipse-debug</filename>
            image feature.
            <note>
                See the
                "<ulink url='&YOCTO_DOCS_REF_URL;#ref-features-image'>Image Features</ulink>"
                section in the Yocto Project Reference Manual for information on
                image features.
            </note>
            To include the <filename>eclipse-debug</filename> image feature,
            modify your <filename>local.conf</filename> file in the
            <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
            so that the
            <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTRA_IMAGE_FEATURES'><filename>EXTRA_IMAGE_FEATURES</filename></ulink>
            variable includes the "eclipse-debug" feature.
            After modifying the configuration file, you can rebuild the image.
            Once the image is rebuilt, the <filename>tcf-agent</filename>
            will be included in the image and is launched automatically after
            the boot.
        </para>
    </section>

    <section id='extracting-the-root-filesystem'>
        <title>Extracting the Root Filesystem</title>

        <para>
            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.
        </para>

        <para>
            Here are some cases where you need to extract the 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>
            To extract the root filesystem, first <filename>source</filename>
            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
            <filename>tmp</filename> directory.
            If you installed the toolchain by hand, the environment setup
            script is located in <filename>/opt/poky/&DISTRO;</filename>.
        </para>

        <para>
            After sourcing the environment script, use the
            <filename>runqemu-extract-sdk</filename> command and provide the
            filesystem image.
        </para>

        <para>
            Following is an example.
            The second command sets up the environment.
            In this case, the setup script is located in the
            <filename>/opt/poky/&DISTRO;</filename> directory.
            The third command extracts the root filesystem from a previously
            built filesystem that is located in the
            <filename>~/Downloads</filename> directory.
            Furthermore, this command extracts the root filesystem into the
            <filename>qemux86-sato</filename> directory:
            <literallayout class='monospaced'>
     $ 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
            </literallayout>
            You could now point to the target sysroot at
            <filename>qemux86-sato</filename>.
        </para>
    </section>
</section>

<section id='optionally-building-a-toolchain-installer'>
    <title>Optionally Building a Toolchain Installer</title>

    <para>
        As an alternative to locating and downloading a toolchain installer,
        you can build the toolchain installer if you have a
        <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
        <note>
            Although not the preferred method, it is also possible to use
            <filename>bitbake meta-toolchain</filename> 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
            "<link linkend='extracting-the-root-filesystem'>Extracting the Root Filesystem</link>"
            section.
        </note>
    </para>

    <para>
        To build the toolchain installer and populate the SDK image, use the
        following command:
        <literallayout class='monospaced'>
     $ bitbake <replaceable>image</replaceable> -c populate_sdk
        </literallayout>
        The command results in a toolchain installer that contains the sysroot
        that matches your target root filesystem.
    </para>

    <para>
        Another powerful feature is that the toolchain is completely
        self-contained.
        The binaries are linked against their own copy of
        <filename>libc</filename>, 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
        <filename>populate_sdk</filename> archive.
    </para>

    <para>
        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 <filename>gcc</filename> as a set of compiler options.
        Those options are set up by the environment script and contained in
        variables such as
        <ulink url='&YOCTO_DOCS_REF_URL;#var-CC'><filename>CC</filename></ulink>
        and
        <ulink url='&YOCTO_DOCS_REF_URL;#var-LD'><filename>LD</filename></ulink>.
        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.
    </para>

    <para>
         Remember, before using any BitBake command, you
         must source the build environment setup script
         (i.e.
         <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
         or
         <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>)
         located in the Source Directory and you must make sure your
         <filename>conf/local.conf</filename> variables are correct.
         In particular, you need to be sure the
         <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
         variable matches the architecture for which you are building and that
         the
         <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>
         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).
    </para>

    <para>
        When the <filename>bitbake</filename> command completes, the toolchain
        installer will be in
        <filename>tmp/deploy/sdk</filename> 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
            <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink>
            variable inside your <filename>local.conf</filename> file to
            install the appropriate library packages.
            Following is an example using <filename>glibc</filename> static
            development libraries:
            <literallayout class='monospaced'>
     IMAGE_INSTALL_append = " glibc-staticdev"
            </literallayout>
        </note>
    </para>
</section>

<section id='optionally-using-an-external-toolchain'>
    <title>Optionally Using an External Toolchain</title>

    <para>
        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:
        <itemizedlist>
            <listitem><para>
                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.
                </para></listitem>
            <listitem><para>
                Make sure you add the layer that contains the toolchain to
                your <filename>bblayers.conf</filename> file through the
                <ulink url='&YOCTO_DOCS_REF_URL;#var-BBLAYERS'><filename>BBLAYERS</filename></ulink>
                variable.
                </para></listitem>
            <listitem><para>
                Set the
                <ulink url='&YOCTO_DOCS_REF_URL;#var-EXTERNAL_TOOLCHAIN'><filename>EXTERNAL_TOOLCHAIN</filename></ulink>
                variable in your <filename>local.conf</filename> file
                to the location in which you installed the toolchain.
                </para></listitem>
        </itemizedlist>
        A good example of an external toolchain used with the Yocto Project
        is <trademark class='registered'>Mentor Graphics</trademark>
        Sourcery G++ Toolchain.
        You can see information on how to use that particular layer in the
        <filename>README</filename> file at
        <ulink url='http://github.com/MentorEmbedded/meta-sourcery/'></ulink>.
        You can find further information by reading about the
        <ulink url='&YOCTO_DOCS_REF_URL;#var-TCMODE'><filename>TCMODE</filename></ulink>
        variable in the Yocto Project Reference Manual's variable glossary.
    </para>
</section>

    <section id='using-pre-built'>
        <title>Example Using Pre-Built Binaries and QEMU</title>

        <para>
            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.
        </para>

        <mediaobject>
            <imageobject>
            <imagedata fileref="figures/using-a-pre-built-image.png" format="PNG" align='center' scalefit='1'/>
            </imageobject>
            <caption>
                <para>Using a Pre-Built Image</para>
            </caption>
        </mediaobject>

        <para>
            For this scenario, you need to do several things:
        </para>

        <itemizedlist>
            <listitem><para>Install the appropriate stand-alone toolchain tarball.</para></listitem>
            <listitem><para>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.).</para></listitem>
            <listitem><para>Download the filesystem image for your target machine's architecture.
                </para></listitem>
            <listitem><para>Set up the environment to emulate the hardware and then start the QEMU emulator.
                </para></listitem>
        </itemizedlist>

        <section id='installing-the-toolchain'>
            <title>Installing the Toolchain</title>

            <para>
                You can download a tarball installer, which includes the
                pre-built toolchain, the <filename>runqemu</filename>
                script, and support files from the appropriate directory under
                <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'></ulink>.
                Toolchains are available for 32-bit and 64-bit x86 development
                systems from the <filename>i686</filename> and
                <filename>x86_64</filename> directories, respectively.
                The toolchains the Yocto Project provides are based off the
                <filename>core-image-sato</filename> image and contain
                libraries appropriate for developing against that image.
                Each type of development system supports five or more target
                architectures.
            </para>

            <para>
                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.
            </para>

            <literallayout class='monospaced'>
     poky-glibc-<replaceable>host_system</replaceable>-<replaceable>image_type</replaceable>-<replaceable>arch</replaceable>-toolchain-<replaceable>release_version</replaceable>.sh

     Where:
         <replaceable>host_system</replaceable> is a string representing your development system:

                    i686 or x86_64.

         <replaceable>image_type</replaceable> 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

         <replaceable>arch</replaceable> is a string representing the tuned target architecture:

                    i586, x86_64, powerpc, mips, armv7a or armv5te

         <replaceable>release_version</replaceable> is a string representing the release number of the
                Yocto Project:

                    &DISTRO;, &DISTRO;+snapshot
            </literallayout>

            <para>
                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 <filename>core-image-sato</filename>:
                <literallayout class='monospaced'>
     poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
                </literallayout>
            </para>

            <para>
                Toolchains are self-contained and by default are installed into
                <filename>/opt/poky</filename>.
                However, when you run the toolchain installer, you can choose an
                installation directory.
            </para>

            <para>
                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.
            </para>

            <para>
                The example assumes the toolchain installer is located in <filename>~/Downloads/</filename>.
                <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.
                </note>
            </para>

            <para>
                <literallayout class='monospaced'>
     $ ~/Downloads/poky-glibc-x86_64-core-image-sato-i586-toolchain-&DISTRO;.sh
                </literallayout>
            </para>

            <para>
                For more information on how to install tarballs, see the
                "<ulink url='&YOCTO_DOCS_ADT_URL;#using-an-existing-toolchain-tarball'>Using a Cross-Toolchain Tarball</ulink>" and
                "<ulink url='&YOCTO_DOCS_ADT_URL;#using-the-toolchain-from-within-the-build-tree'>Using BitBake and the Build Directory</ulink>" sections in the Yocto Project Application Developer's Guide.
            </para>
        </section>

        <section id='downloading-the-pre-built-linux-kernel'>
            <title>Downloading the Pre-Built Linux Kernel</title>

            <para>
                You can download the pre-built Linux kernel suitable for running in the QEMU emulator from
                <ulink url='&YOCTO_QEMU_DL_URL;'></ulink>.
                Be sure to use the kernel that matches the architecture you want to simulate.
                Download areas exist for the five supported machine architectures:
                <filename>qemuarm</filename>, <filename>qemumips</filename>, <filename>qemuppc</filename>,
                <filename>qemux86</filename>, and <filename>qemux86-64</filename>.
            </para>

            <para>
                Most kernel files have one of the following forms:
                <literallayout class='monospaced'>
     *zImage-qemu<replaceable>arch</replaceable>.bin
     vmlinux-qemu<replaceable>arch</replaceable>.bin

     Where:
         <replaceable>arch</replaceable> is a string representing the target architecture:
                x86, x86-64, ppc, mips, or arm.
                </literallayout>
            </para>

            <para>
                You can learn more about downloading a Yocto Project kernel in the
                "<ulink url='&YOCTO_DOCS_DEV_URL;#local-kernel-files'>Yocto Project Kernel</ulink>"
                bulleted item in the Yocto Project Development Manual.
            </para>
        </section>

        <section id='downloading-the-filesystem'>
            <title>Downloading the Filesystem</title>

            <para>
                You can also download the filesystem image suitable for your target architecture from
                <ulink url='&YOCTO_QEMU_DL_URL;'></ulink>.
                Again, be sure to use the filesystem that matches the architecture you want
                to simulate.
            </para>

            <para>
                The filesystem image has two tarball forms: <filename>ext3</filename> and
                <filename>tar</filename>.
                You must use the <filename>ext3</filename> form when booting an image using the
                QEMU emulator.
                The <filename>tar</filename> form can be flattened out in your host development system
                and used for build purposes with the Yocto Project.
                <literallayout class='monospaced'>
     core-image-<replaceable>profile</replaceable>-qemu<replaceable>arch</replaceable>.ext3
     core-image-<replaceable>profile</replaceable>-qemu<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, or sato-sdk. For information on these types of image
                   profiles, see the "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
                   chapter in the Yocto Project Reference Manual.

         <replaceable>arch</replaceable> is a string representing the target architecture:
                x86, x86-64, ppc, mips, or arm.
                </literallayout>
            </para>
        </section>

        <section id='setting-up-the-environment-and-starting-the-qemu-emulator'>
            <title>Setting Up the Environment and Starting the QEMU Emulator</title>

            <para>
                Before you start the QEMU emulator, you need to set up the emulation environment.
                The following command form sets up the emulation environment.
                <literallayout class='monospaced'>
     $ source &YOCTO_ADTPATH_DIR;/environment-setup-<replaceable>arch</replaceable>-poky-linux-<replaceable>if</replaceable>

     Where:
         <replaceable>arch</replaceable> is a string representing the target architecture:
                i586, x86_64, ppc603e, mips, or armv5te.

         <replaceable>if</replaceable> is a string representing an embedded application binary interface.
              Not all setup scripts include this string.
                </literallayout>
            </para>

            <para>
                Finally, this command form invokes the QEMU emulator
                <literallayout class='monospaced'>
     $ runqemu <replaceable>qemuarch</replaceable> <replaceable>kernel-image</replaceable> <replaceable>filesystem-image</replaceable>

     Where:
         <replaceable>qemuarch</replaceable> is a string representing the target architecture: qemux86, qemux86-64,
                    qemuppc, qemumips, or qemuarm.

         <replaceable>kernel-image</replaceable> is the architecture-specific kernel image.

         <replaceable>filesystem-image</replaceable> is the .ext3 filesystem image.

                </literallayout>
            </para>

            <para>
                Continuing with the example, the following two commands setup the emulation
                environment and launch QEMU.
                This example assumes the root filesystem (<filename>.ext3</filename> 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.
                <literallayout class='monospaced'>
     $ cd $HOME
     $ source &YOCTO_ADTPATH_DIR;/environment-setup-i586-poky-linux
     $ runqemu qemux86 bzImage-qemux86.bin \
     core-image-sato-qemux86.ext3
                </literallayout>
            </para>

            <para>
                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.</note>
            </para>
        </section>
</section>

</chapter>
<!--
vim: expandtab tw=80 ts=4
-->
