Toolchain
From Openmoko
Contents |
Introduction
A toolchain is a set of tools that allows you to compile code. For OpenMoko, we have to differenciate the following use-cases:
- Developing a single application
For this, you should use a prebuilt toolchain from the OpenMoko project. Here you can find a recipe to get started with this toolchain leading you through a series of steps to compile a project and run it on your target device. You might have heard about OpenEmbedded, however as an application programmer, you should not be using OpenEmbedded.
- System Integration and customizing a distribution
For this task, you should use OpenEmbedded which builds its own cross compiler during the bootstrapping/build process. System Integration and customizing a distribution is out of scope of this page.
Prerequisites
You should be reasonably familiar with Linux and its command line tools, have an x86-compatible computer with at least 1G of free disk space. You should have experience with compiling programs from source using your local compiler. The remainder of this document will also assume you have write access in your home directory (~) and /usr/local/. If this is not the case, please call your local administrator for help.
Downloading and installing the toolchain
The prebuilt toolchain can be downloaded from [downloads.openmoko.org]:
mkdir ~/sources cd ~/sources wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
Next, you want to extract it on your filesystem. This toolchain is not relocatable, it needs to be installed into /usr/local/openmoko/:
cd / tar xjvf ~/sources/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
The prebuilt toolchain is for x86_64 now. You could build it on your own with OE:
bitbake meta-toolchain-openmoko
Finally, everytime you want to use this toolchain, you need to alter some environment variables, so that your tools will be found. The toolchain provides a script to do that, so the only thing you need to do is to source it:
source /usr/local/openmoko/arm/setup-env
Using the toolchain to build a sample project
In your home directory:
cp -r /usr/local/openmoko/arm/share/openmoko-sample2 ~/ . /usr/local/openmoko/arm/setup-env om-conf openmoko-sample2 <modify it if you want and make>
If you want to install this project on host for staging usage later, a shared library, for example, you can then call make install to install it into the configured prefix.
make install
Packaging your application
We have included a script to make an ipkg out of your application.
om-make-ipkg openmoko-sample2
Now you got openmoko-sample2_0.1_armv4t.ipk , you can `scp' it to your neo and install it:
scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202: ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk
Note that while you can redistribute the generated ipkg, be aware that this is a bare-bones ipk that contains no further information, i.e. you will lack library dependencies.
You could supply the version number, a description, and an author / contacts string in a control file if you know how to use it:
om-make-ipkg myapp myapp_control
A template of myapp_control:
Package: $appname Version: 0.1 Description: package built by openmoko toolchain Section: openmoko/applications Priority: optional Maintainer: $USER Architecture: armv4t Homepage: http://www.openmoko.org/ Depends: Source: ${SRC}
TODO: hint how to get the package included in OE (See: To-Do List) |
Where to go from here
TODO: write (See: To-Do List) |
Advanced topics
Installing additional libraries into the toolchain
TODO: write (See: To-Do List) |
Troubleshooting
TODO: write (See: To-Do List) |
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |