Hi Chris, Find some information about EABI below I hope this helps you. The EABI(Embedded Application Binary interface) specifies the standards conventions for file formats, datatypes , register usage, stack frame organization, and function parameter passing for embedded programs which is intended to afford interoperability between conforming software component. The EABI is optimized for embedded applications. The most common EABI are POWERPC, ARM and MIPS. Embedded programs that conform to the EABI gain efficiency in space and time by using the following features: * minimized stack usage * relaxed alignment restrictions, optimizing memory usage * small data areas for RAM data, read-only data, and data around address zero. These reduce code size and improve data access time. With Regards, Anand -----Original Message----- From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] On Behalf Of Warlich, Christof Sent: Thursday, October 17, 2013 12:01 PM To: gcc-help (gcc-help@xxxxxxxxxxx) Subject: EABI Hi, I'd really like to wrap my head around the concept of gcc toolchain generation w.r.t. different ABIs. So far, I managed to build cross compilers for the various architectures I need to support using these target tuples: i686-mytoolchain-linux-gnu mipsel-mytoolchain-linux-gnu mipseb-mytoolchain-linux-gnu powerpc-mytoolchain-linux-gnu but for ARM, I had to use linux-guneabi instead of linux-gnu to get the build done, i.e. arm-mytoolchain-linux-gnueabi To make all toolchains look as similar as possible, I then did use -gnueabi for the other architectures as well, which also worked fine, i.e. i686-mytoolchain-linux-gnueabi mipsel-mytoolchain-linux-gnueabi mipseb-mytoolchain-linux-gnueabi powerpc-mytoolchain-linux-gnueabi arm-mytoolchain-linux-gnueabi Now I really would like to understand what this eabi thing is all about in the context of GNU toolchain generation: Does it only make a difference for ARM? And what is the proper convention to be used for the other architecture's toolchains, _if_ it is only convention there? Should I go with or without -gnueabi for them? Finally, a quick look at the config.sub and configure scripts of gcc seem to indicate that -gnueabi only makes a difference for arm-, while -eabi is special for powerpc- and arm- (and _different_ from -gnueabi for arm-!). And what about mips*- and i*86-? At least for MIPS, Wikipedia says that EABI is also supported for this architecture. Thanks to anyone who could shed some light into the concept of different ABIs from the toolchain generation point of view. Cheers, Chris