Navigation


Distributed Debian Build Environment Study

Basics of Cross Compiling

Cross compiling and software building overall has never been a problem-free area in mobile software development. Actual devices have restrictions, limited amount of RAM, low CPU clock rates and insignificant overall performance that make compiling rather time-consuming or impossible.

A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run. Cross compiler tools are generally found in use to generate compiles for embedded system or multiple platforms. It is a tool that one must use for a platform where it is inconvenient or impossible to compile on that platform, like microcontrollers that run with a minimal amount of memory for their own purpose. It has become more common to use this tool for paravirtualization, where a system may have one or more platforms in use.

Cross compiling requires tuned up compilers, and works with a very strict set of toolchains. Cross compiling is holding back the utilization of latest versions of compiler tools. Due to this limitation, one cannot take existing Linux Distribution sources and start cross compiling from scratch.

Hardware

For some time now, even normal home PCs have offered such performance that the actual build times come somewhat irrelevant. Also mobile processor manufacturers have been closing the gap between them and x86 architecture.  Freescale i.MX515 is good example of ultra high performance ARM processor.

Project Scope

The goal of this project is to get rid of the mental barriers when it comes to building to ARM, find a solution to build software packages with the same workflow and tools like it's always done in x86. Most of all, get rid of the annoyances of cross compiling and rise the focus from tool issues to building complete distributions on the fly.

The following configuration examples and documentation are written for ARM, but are easily transferable for any other processor family or architecture Qemu supports.

Packages are built in fully automated Debian builder environment; Buildd.

The autobuilder network is a Debian development that helps to speed up package recompilations for all the architectures Debian currently supports. This network is made up of several machines that use a specific software package called buildd to pick up packages from the Debian archive and rebuild them for the target architecture.

Contacts & Credits

If you are interested about this project you can contact Miko Nieminen miko.nieminen@…. At the moment this location is temporary and we are searching for proper place for this information.

This project is done by Nomovok and Nokia, Inc has sponsored our work. Special appreciation goes to NRC Cambridge (Nokia Research Center) and especially to guys behind mojo.handhelds.org, whose work this is based on.

Table of Contents

Introduction:
Setup:
Management:

Topics:

Tools & Methods
Build Server
Benchmark specification
Future Enhancement Ideas