One good pointer : http://baruch.siach.name/blog/posts/introduction_to_cross_compilation_part_1/
I have also blogged that. https://imvoid.wordpress.com/2013/05/13/cross-compiling-reblog/
Developers develop applications for various needs. And every need has its own platform requirements.
Some examples are,
- Develop calculator for Desktop [ Running Windows / Linux on X86 platform mostly ]
- Develop calculator for Mobile [ Running Android / Windows on ARM platform mostly]
Almost every OS has certain SDK for each platform to facilitate development for that.
But those platforms aren’t easy for development mostly. Even the SDK’s are for other platforms, say Windows or Linux or MAC.
This process of compiling for another platform/architecture/Operating system in some other platform/architecture/Operating system is known as cross compiling.
Here, we are going to discuss about cross compilation for ARM architecture.
For ARM, we can see various types of cross compilers. To be specific, cross compilers in different names, like,
To understand this, understanding the naming convention helps. The name of the compiler explains all about it.
Generally, the naming of cross compiler can be split as below.
arch-vendor-(os-)abi arch is for architecture: arm, mips, x86, i686... vendor is tool chain supplier: apple, Codesourcery, Linux, os is for operating system: linux, none (bare metal) abi is for application binary interface convention: eabi, gnueabi, gnueabihf
Lets see an example to understand this more clearly
arm-none-linux-gnueabi- arch-vendor-(os-)abi Arch : Arm architecture Vendor : Target OS : None Host OS : Linux ABI : gnueabi This indicates, this cross compiler targets ARM architecture [Generated code for arm architecture], which is not provided by anyone specific, builds binary for no operating system [ Bare Metal ] and it runs on linux operating system providing binary for GNU EABI.