My Tech notes: Scratchbox Cross-compiling Made Easy
Subscribe

Unix Documentation

Free Online Unix Training Materials

Lists many links to free Unix training materials.

Pointers and Arrays Materials

Pointers and Arrays materials Explained for C beginners

C FAQ and General Questions C Interview Questions

Powered By

Free XML Skins for Blogger

Powered by Blogger

Tuesday, November 11, 2008

Scratchbox Cross-compiling Made Easy

Often Getting problems with corss compiling here is the perfect solution, read on.
Scratchbox is a configuration and compilation environment for building Linux software and entire Linux distributions.
The basic idea of Scratchbox is to offer developers an environment that works and looks like the target environment before the target environment is available.
The Scratchbox is an environment that you log into like you would log into some machine. However, the Scratchbox tools can be used either inside or outside of Scratchbox download
scratchbox-core
http://www.scratchbox.org/download/files/sbox-releases/1.0/tarball/scratchbox-core-1.0.1-i386.tar.gz
scratchbox-libs
http://www.scratchbox.org/download/files/sbox-releases/1.0/tarball/scratchbox-libs-1.0.1-i386.tar.gz
scratchbox-toolchain-arm-glibc
http://www.scratchbox.org/download/files/sbox-releases/1.0/tarball/scratchbox-toolchain-arm-gcc3.3-glibc2.3-1.0.1-i386.tar.gz
untar all tar ball using tar -xzf command
then run
$/scratchbox/run_me_first.sh

’run_me_first.sh’ asks you some questions, just use defaults. After this we need to add user for
Scratchbox. User must be some user that you have in your system.

Cross-compiling outside Scratchbox
$/scratchbox/compilers/arm-gcc-3.3.4-glibc-2.3.2/bin/arm-linux-gcc -Wall -o arm-hello hello.c

Cross-compiling in Scratchbox
Scratchbox is a chrooted cross-compilation environment. This means one has to log into the Scratchbox like one would log into a some real machine
You can log into the Scratchbox system with a command: ’/scratchbox/login’. You should get some welcome messages and your prompt should change to something like
’[sbox-HOST: ~] > ’..

The Scratchbox prompt ’[sbox-HOST: ~] > ’ tells you that you are in Scratchbox environment and that you are using target called HOST. In Scratchbox you can have multiple targets which means that you can compile programs for many different architectures and settings.
then create a target for our cross-compilation needs.

[sbox-HOST: ~] > sb-conf setup MYTARGET -c arm-gcc-3.3.4-glibc-2.3.2
-t qemu-arm
[sbox-HOST: ~] > sb-conf select MYTARGET
[sbox-MYTARGET: ~] >

Scratchbox comes with ARM emulator QEMU.

[sbox-MYTARGET: ~] > gcc -Wall -o sb-arm-hello hello.c
as we are inside the Scratchbox environment we can also run the program although it is an ARM
binary and we are on X86 machine. This was because we have the emulator:
[sbox-MYTARGET: ~] > ./sb-arm-hello
Hello World!


Scratchbox website (http://scratchbox.org/).
Installing Scratchbox (http://www.scratchbox.org/documentation/docbook/installdoc.html).
QEMU (http://fabrice.bellard.free.fr/qemu/).

No comments:

Post a Comment