When talking about toolchains, one must distinguish three different machines :
- the build machine, on which the toolchain is built
- the host machine, on which the toolchain is executed
- the target machine, for which the toolchain generates code
From these three different machines, we distinguish four different types of toolchain building processes :
- A native toolchain, as can be found in normal Linux distributions, has usually been compiled on x86, runs on x86 and generates code for x86.
- A cross-compilation toolchain, which is the most interesting toolchain type for embedded development, is typically compiled on x86, runs on x86 and generates code for the target architecture (be it ARM, MIPS, PowerPC or any other architecture supported by the different toolchain components)
- A cross-native toolchain, is a toolchain that has been built on x86, but runs on your target architecture and generates code for your target architecture. It’s typically needed when you want a native gcc on your target platform, without building it on your target platform.
- A canadian build is the process of building a toolchain on machine A, so that it runs on machine B and generates code for machine C. It’s usually not really necessary.