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.
archis for architecture: arm, mips, x86, i686...- The arch refers to the target architecture, ex: ARM.
vendoris tool chain supplier: apple,- The vendor nominally refers to the toolchain supplier.
osis 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.
abiis for application binary interface convention: eabi, gnueabi, gnueabihf- The abi specifies which application binary interface convention is being employed, which ensures that binaries generated by different tools can interoperate.
Some examples will illustrate the rough naming convention:
• arm-none-eabi: This toolchain targets the ARM architecture, has no vendor, does not target an operating system (i.e. targets a “bare metal” system), and complies with the ARM EABI.
• i686-apple-darwin10-gcc-4.2.1: This toolchain targets the Intel i686 architecture, the vendor is Apple, and the target OS is Darwin version 10.
• arm-none-linux-gnueabi: This toolchain can be installed in Debian-based systems using a package manager like apt (the package is called gcc-arm-linux-gnueabi). This toolchain targets the ARM architecture, has no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI. In other words, it is used to target ARM-based Linux systems.
• arm-oe-linux-gnueabi: This toolchain is from vendor open embedded.
• arm-eabi (Android ARM compiler)
Comments
Post a Comment