Linux Programmer’s Guide
Introduction to Toolchain
Toolchain are Chain or set of programming tools for building an apps , it could include following :
- Editor for writing program
- Linker loader
- Binutils etc.
Native toolchains are tools which makes binaries for the environment where it toolchain itself is being run.i.e Host and target are same platform. This type of Compilation process is called Native compilation .Meaning that the program is compiled on same platform where it has to be run. Similar to normal PC based program ,they are compiled and run on same machine.
It is much easier to program using this method as it doesn’t involve any Makefile changes.
Earlier embedded devices had very less memory and space and also limited supports of Input-output peripherals, hence Native compilation was not possible or very difficult. But with the advent of powerful embedded ARM processor its now possible to make application on the platform itself. Same can be done in Hawk board too. But still it will be slower to compile as in X86 machine.
e.g. Normal GCC Toolchain in x86 Linux machine is a Native toolchain.
Toolchain which are used to compile the application that will run of different machine(architecture) .This is usually used for embedded apps (e.g ARM programming) You program in x86 environment and run in ARM Board. This type of compiling is called cross compiling
Since native compilation is either not possible or very slow ,Cross compilation present a better alternative for faster development .Only drawback is to properly set build environment and Makefiles.
It similar to native toolchain,but infact toolchain run in virtualised environment on Host.Simple example is QEMU -ARM Running on X86 Linux & you are developing application on this Virtual environment.
This has advantage of both Native and Cross compilation.Speed of cross compilation & Ease of Native development.
Various solution exists, One is scratchbox ,another is ChrootEABI feature in Ubuntu.