Along with recipes for building a compiler for internal its own use, OpenEmbedded has recipes to create a full cross-compiler environment for the host. First, you need to have a working OpenEmbedded environment (see [[Getting_started]]). Note that throughout this article we will use the example of working on the ARM architecture. While particular file names may differ in your case, the general process should be similar. To build the cross-compiler, build the <tt>meta-toolchain</tt> recipe,

Along with recipes for building a compiler for internal its own use, OpenEmbedded has recipes to create a full cross-compiler environment for the host. First, you need to have a working OpenEmbedded environment (see [[Getting_started]]). Note that throughout this article we will use the example of working on the ARM architecture. While particular file names may differ in your case, the general process should be similar. To build the cross-compiler, build the <tt>meta-toolchain</tt> recipe,

Line 18:

Line 20:

Note that the meta-toolchain environment does not include any of the libraries included in your target image.

Note that the meta-toolchain environment does not include any of the libraries included in your target image.

−

= Installing libraries =

+

= Installing libraries and headers =

−

Along with a compiler, the meta-toolchain also comes with an installation of <tt>opkg</tt> with which one can install libraries into your cross-compilation environment. To install packages for use in cross-compiling use the <tt>opkg-target</tt> executable (not <tt>opkg</tt>; does anyone know what the latter is for?) There are a few For instance, to install the boost library,

+

Along with a compiler, the meta-toolchain also comes with an installation of <tt>opkg</tt> with which one can install libraries into your cross-compilation environment. To install packages for use in cross-compiling use the <tt>opkg-target</tt> executable (not <tt>opkg</tt>; does anyone know what the latter is for?) There are a few For instance, to install the development headers for the boost library (<tt>boost-dev</tt>),

<pre><nowiki>

<pre><nowiki>

Line 25:

Line 27:

# source /usr/local/angstrom/arm/environment-setup

# source /usr/local/angstrom/arm/environment-setup

# opkg-target update

# opkg-target update

−

# opkg-target install boost

+

# opkg-target install boost-dev

</nowiki></pre>

</nowiki></pre>

Latest revision as of 15:01, 7 November 2012

NOTE: This page has been identified as having content that is significantly out-of-date, usually because it refers to OpenEmbedded-Classic - for new projects, you should use OpenEmbedded-Core.

Along with recipes for building a compiler for internal its own use, OpenEmbedded has recipes to create a full cross-compiler environment for the host. First, you need to have a working OpenEmbedded environment (see Getting_started). Note that throughout this article we will use the example of working on the ARM architecture. While particular file names may differ in your case, the general process should be similar. To build the cross-compiler, build the meta-toolchain recipe,

$ bitbake meta-toolchain

This will produce a tarball in a subdirectory of deploy/sdk. This tarball includes compiler executables, libraries, and core headers, as well as a small environment script, all under the prefix of usr/local/angstrom. To install this tarball, simply untar into /,

$ sudo tar -C / -pxvjf $SDK_ROOT/sdk-

To cross-compile a package for your target platform, simply source the provided environment-setup script and compile as usual,

$ source /usr/local/angstrom/arm/environment-setup
$ make

Note that the meta-toolchain environment does not include any of the libraries included in your target image.

Along with a compiler, the meta-toolchain also comes with an installation of opkg with which one can install libraries into your cross-compilation environment. To install packages for use in cross-compiling use the opkg-target executable (not opkg; does anyone know what the latter is for?) There are a few For instance, to install the development headers for the boost library (boost-dev),

Because of the self-contained nature of the kernel, one must proceed slightly differently than with cross-compiling user-mode software. Namely, one must not use the environment-setup script provided with meta-toolchain. This script modifies environment required by the host compiler used to compile tools used during the build process, resulting in difficult to trace errors.[1][2]

Instead, one simply must pass the target architecture and the cross-compiler executable name prefix to Kbuild,