diff options
Diffstat (limited to 'yocto-poky/documentation/adt-manual/adt-prepare.xml')
-rw-r--r-- | yocto-poky/documentation/adt-manual/adt-prepare.xml | 999 |
1 files changed, 0 insertions, 999 deletions
diff --git a/yocto-poky/documentation/adt-manual/adt-prepare.xml b/yocto-poky/documentation/adt-manual/adt-prepare.xml deleted file mode 100644 index 65df1d03e..000000000 --- a/yocto-poky/documentation/adt-manual/adt-prepare.xml +++ /dev/null @@ -1,999 +0,0 @@ -<!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. - If you do not change the <filename>MACHINE</filename> - variable, the OpenEmbedded build system uses - <filename>qemux86</filename> 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 <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>Make Sure Your Layers are Enabled:</emphasis> - Examine the <filename>conf/bblayers.conf</filename> 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 - "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>" - section in the Yocto Project Development Manual. - </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 ---> |