Posts

Showing posts from December, 2020

Compiler toolchains naming convention

Unix cross compiler naming conventions can seem mystifying. If you search for an ARM compiler, you might stumble across the following toolchains: arm-none-linux-gnueabi, arm-none-eabi, arm-eabi, and arm-softfloat-linux-gnu, among others. This might leave you wondering about the method to the naming madness. Toolchains have a loose name convention like  arch[-vendor][-os]-abi . arch   is for architecture:  arm ,  mips ,  x86 ,  i686 ... The arch refers to the target architecture, ex: ARM.  vendor   is tool chain supplier:  apple , The vendor nominally refers to the toolchain supplier. os   is for operating system:  linux ,  none  (bare metal) The os refers to the target operating system, if any, and is used to decide which libraries (e.g. newlib, glibc, crt0, etc.) to link and which syscall conventions to employ. abi   is for application binary interface convention:  eabi ,  gnueabi ,  gnueabihf The abi ...