Comparing Scratchbox cross-compile times to native compile times
Nov 1, 2004 — by LinuxDevices Staff — from the LinuxDevices Archive — 2 viewsForeword: Scratchbox, an open source project to simplify cross-platform software compilation, has recently made several advances that may interest embedded device developers. This whitepaper describes how Scratchbox — which was originated by Movial and is being sponsored by Nokia — is helping Debian ARM strive for parity with Debian x86 by enabling package maintainers to build native ARM… applications on fast x86 PCs, without modifying package build scripts.
A more basic Introduction to Scratchbox is also available as background.
Cross compiling versus native compiling
Scratchbox is a open source configuration and compilation environment for building Linux software and even entire Linux distributions. The basic idea in Scratchbox is to offer developers an environment that works and looks like the target environment before the target environment is available. This speeds up development and facilitates cross-compilation.
During the past months the Scratchbox development team has focused on making Scratchbox work more like a native build system, and bringing in support for additional architectures (like MIPS). The focus has been largely on building Debian packages using Scratchbox, as it appeared to be quite difficult in the past. Debian policy has been that everything should be built natively — which is very time consuming and quite tedious, for example on ARM based systems. Scratchbox is designed to enable faster building, without hacking all the build scripts of all possible packages. It would be great to get the Debian ARM version up to date with the Debian x86 version.
Briefly, we have modified the Scratchbox environment and Debian tools so that they allow building almost any Debian package for ARM just like it would be done on a native ARM-PC or equivalent. The Scratchbox ARM environment with Debian Devkit looks just like an ARM-PC that has Debian installed, although in reality you are comfortably using a fast x86 system with its own Linux distribution. This makes fast and native compilation possible.
Scratchbox compile times
We wanted to prove our claim that Scratchbox makes cross-compilation faster and easier, and for this reason we compared some real compile times with native building versus Scratchbox compile times.
The main thing with Scratchbox is to make cross compiling easy, so that it is not necessary to modify the source packages or build systems. To prove our point, we chose some packages that are generally seen to be hard to cross-compile. Gtk2 and the helper libraries you need for that have traditionally been quite challenging to cross-compile. However, with Scratchbox we didn't need to tweak the build scripts at all. We also compiled gimp for more proof.
We used a ARM-PC (see below) as the Native compile environment and also as the CPU-transparency device when compiling with Scratchbox.
The graph below shows the actual compile times. The results show that Scratchbox really shortens the time needed for cross-compilation compared to native ARM. E.g., cross-compiling gtk2 on Scratchbox takes almost 10 times less time than on native ARM PC. The difference remains about the same with other packages, indicating that Scratchbox tremendously decreases the cross-compilation times. On the other hand, the difference between Scratchbox and native x86 was quite tolerable.
Scratchbox compiles are nearly as fast as native x86 compiles.
Tabulated data appears below.
Package | Native ARM | SB ARM | Native x86 |
---|---|---|---|
Glib2 | 61min 59sec | 6 min 20sec | 2 min 50 sec |
ATK | 23min 18sec | 2min 18sec | 1min 4sec |
Pango | 57min 8sec | 5min 2sec | 2min 42sec |
GTK2 | 275min 51sec | 18min 43sec | 12min 12sec |
Gimp | 301min 34sec | 20min 12sec | 12min 5sec |
Conclusion
We believe that the results shown in this article indicate clearly that compiling in Scratchbox is a lot faster than compiling the native way, for example for the ARM target. Scratchbox is now easier to use and set up, thanks to better documentation. Compiling in Scratchbox is almost as easy as compiling natively, and it doesn't require special hacking of packages like cross-compiling the old-fashioned way. We strongly encourage everybody to try it out and to challenge our claims!
Test platform details
- Linux PC:
- Intel Xeon CPU 2.80GHz; 80GB IDE HDD; 2GB RAM
- Debian Sarge with Linux kernel 2.6.8-1-686
- Scratchbox 0.9.8.2
- ARM PC:
- Intel SA110 CPU 233MHz; 40GB IDE HDD; 256MB RAM
- Debian Sarge with Linux kernel 2.4.25
Further information
- Scratchbox website
- Introduction to Scratchbox
- Cross-compilation and cross-configuration explained
- Debian
- Debian ARM Port
- Linux from scratch
- QEMU
- GTK2
- Gimp
About the author: Veli Mankinen has been a technical project manager in Movial for over two years, and has been involved in many of Movial's embedded Linux projects. Veli is one of the lead architects and developers behind Scratchbox. The Scratchbox project originated at and is maintained by Movial, a Finnish software design, integration, and development firm specializing embedded Linux and Symbian devices.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.