If all of CodeSourcery's GNU Toolchains use the ARM EABI, and compilers using the ARM EABI are interoperable, why are there different toolchains for GNU/Linux, SymbianOS, and bare metal?

Question

If all of CodeSourcery's GNU Toolchains use the ARM EABI, and compilers using the ARM EABI are interoperable, why are there different toolchains for GNU/Linux, SymbianOS, and bare metal?

Answer

The ARM EABI is actually a family of ABIs. Code compiled for one operating system will not necessarily run on another, even if the ARM EABI is in use. For example, code that depends on C library routines that are only available on some systems will not work on other systems. The linker must also generate somewhat different code depending on the target system. Therefore, you must use the toolchain that has been built for the operating system on which your code will run.


This entry was last updated on 8 March 2013.