Page tree
Skip to end of metadata
Go to start of metadata

Introduction

The GCC compiler uses 'triples' when referring to the host system that the compiler runs on or the target system that a compiler will generate binaries to run on.

The term 'triple' refers to the method used in the GNU/Linux operating system to designate a specific host or target.  It is separated into the following components:

<arch>-<vendor>-<operatingsystem

The <operatingsystem> may be further divided into an optional operating system and ABI portions.  For example the Linux OS and the GNU hardfloat ABI might have the following <operatingsystem>, "-linux-gnueabihf".  Whereas a bare-metal target will not have an OS but only the embedded ABI, "-eabi".

https://gcc.gnu.org/install/specific.html

For default configuration of each 'triples', see ARM and AArch64 Target Triples default options.

Little-Endian Triples

Little-endian is the default bit ordering on ARM. 

aarch64-linux-gnu

Toolchains for little-endian, 64-bit ARMv8 for GNU/Linux systems

      • gcc-linaro-*x86_64_aarch64-linux-gnu.tar.xz 
        • Linux 64-bit binaries for the Aarch64 Linux cross-toolchain 
        gcc-linaro-*i686_aarch64-linux-gnu.tar.xz
        • Linux 32-bit binaries for the Aarch64 Linux cross-toolchain
        gcc-linaro-*i686-mingw32_aarch64-linux-gnu.tar.xz
        •      Windows 32-bit binaries for the Aarch64 Linux cross-toolchain

Default command line options (gcc -v -c): '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'

arm-linux-gnueabihf

Toolchains for little-endian, hard-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems 

      • gcc-linaro-*x86_64_arm-linux-gnueabihf.tar.xz 
        • Linux 64-bit binaries for the ARMv7 Linux hard float cross-toolchain 
        gcc-linaro-*xi686_arm-linux-gnueabihf.tar.xz 
        • Linux 32-bit binaries for the ARMv7 Linux hard float cross-toolchain 
        gcc-linaro-*i686-mingw32_arm-linux-gnueabihf.tar.xz
        •      Windows 32-bit binaries for the ARMv7 Linux hard float cross-toolchain

Default command line options (gcc -v -c): '-march=armv7-a' '-mtune=cortex-a9' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu'

armv8l-linux-gnueabihf

Toolchains for little-endian, 32-bit ARMv8 for GNU/Linux systems 

    • gcc-linaro-*-x86_64_armv8l-linux-gnueabihf.tar.xz 
      •   Linux 64-bit binaries for the Aarch64 Linux cross-toolchain 
      gcc-linaro-*-i686_armv8l-linux-gnueabihf.tar.xz 
      •   Linux 32-bit binaries for the Aarch64 Linux cross-toolchain 
      gcc-linaro-*-i686-mingw32_armv8l-linux-gnueabihf.tar.xz
      •        Windows 32-bit binaries for the Aarch64 Linux cross-toolchain

Default command line options (gcc -v -c): '-march=armv8-a' '-mfloat-abi=hard' '-mfpu=neon-fp-armv8' '-mthumb' '-mtls-dialect=gnu'

arm-linux-gnueabi

Toolchains for little-endian, soft-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems 

    • gcc-linaro-*x86_64_arm-linux-gnueabi.tar.xz 
      •   Linux 64-bit binaries for the ARMv7 Linux soft float cross-toolchain 
      gcc-linaro-*i686_arm-linux-gnueabi.tar.xz 
      •   Linux 32-bit binaries for the ARMv7 Linux soft float cross-toolchain 
      gcc-linaro-*i686-mingw32_arm-linux-gnueabi.tar.xz
      •        Windows 32-bit binaries for the ARMv7 Linux soft float cross-toolchain

Default command line options (gcc -v -c): '-march=armv7-a' '-mtune=cortex-a9' '-mfloat-abi=soft' '-mthumb' '-mtls-dialect=gnu'

aarch64-elf

Toolchains for little-endian, 64-bit ARMv8 for bare-metal systems 

      • gcc-linaro-*x86_64_aarch64-elf.tar.xz 
        • Linux 64-bit binaries for the Aarch64 bare-metal cross-toolchain 
        gcc-linaro-*i686_aarch64-elf.tar.xz 
        • Linux 32-bit binaries for the Aarch64 bare-metal cross-toolchain 
        gcc-linaro-*i686-mingw32_aarch64-elf.tar.xz
        •      Windows 32-bit binaries for the Aarch64 bare-metal cross-toolchain

Default command line options (gcc -v -c): '-march=armv8-a' '-mlittle-endian' '-mabi=lp64'

arm-eabi

Toolchains for little-endian, soft-float, 32-bit ARMv7 (and earlier) for bare-metal systems 

    • gcc-linaro-*x86_64_arm-eabi.tar.xz 
      •    Linux 64-bit binaries for the ARMv7 bare-metal cross-toolchain 
      gcc-linaro-*i686_arm-eabi.tar.xz 
      •    Linux 32-bit binaries for the ARMv7 bare-metal cross-toolchain 
      gcc-linaro-*i686-mingw32_arm-eabi.tar.xz
      •         Windows 32-bit binaries for the ARMv7 bare-metal cross-toolchain

Default command line options (gcc -v -c): None, but 'gcc -S -v' produces '.cpu arm7tdmi' and '.fpu softvfp' in the .s file

Big-Endian Triples

aarch64_be-linux-gnu

Toolchains for big-endian, 64-bit ARMv8 for GNU/Linux systems 

      • gcc-linaro-*x86_64_aarch64_be-linux-gnu.tar.xz 
        • Linux 64-bit binaries for the Aarch64 Linux Big Endian cross-toolchain 
        gcc-linaro-*i686_aarch64_be-linux-gnu.tar.xz 
        • Linux 32-bit binaries for the Aarch64 Linux Big Endian cross-toolchain 
        gcc-linaro-*i686-mingw32_aarch64_be-linux-gnu.tar.xz
        •      Windows 32-bit binaries for the Aarch64 Linux Big Endian cross-toolchain

Default command line options (gcc -v -c): '-march=armv8-a' '-mbig-endian' '-mabi=lp64'

armeb-linux-gnueabihf

Toolchains for big-endian, hard-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems 

      • gcc-linaro-*x86_64_armeb-linux-gnueabihf.tar.xz 
        • Linux 64-bit binaries for the ARMv7 Linux Big Endian hard float cross-toolchain 
        gcc-linaro-*i686_armeb-linux-gnueabihf.tar.xz 
        • Linux 32-bit binaries for the ARMv7 Linux Big Endian hard float cross-toolchain 
        gcc-linaro-*i686-mingw32_armeb-linux-gnueabihf.tar.xz
        •      Windows 32-bit binaries for the ARMv7 Linux Big Endian hard float cross-toolchain

Default command line options (gcc -v -c): '-march=armv7-a' '-mtune=cortex-a9' '-mfloat-abi=hard' '-mfpu=vfpv3-d16' '-mthumb' '-mtls-dialect=gnu'

armeb-linux-gnueabi

Toolchains for big-endian, soft-float, 32-bit ARMv7 (and earlier) for GNU/Linux systems 

      • gcc-linaro-*x86_64_armeb-linux-gnueabi.tar.xz 
        • Linux 64-bit binaries for the ARMv7 Linux Big Endian soft float cross-toolchain 
        gcc-linaro-*i686_armeb-linux-gnueabi.tar.xz 
        • Linux 32-bit binaries for the ARMv7 Linux Big Endian soft float cross-toolchain 
        gcc-linaro-*i686-mingw32_armeb-linux-gnueabi.tar.xz
        •      Windows 32-bit binaries for the ARMv7 Linux Big Endian soft float cross-toolchain

Default command line options (gcc -v -c): '-march=armv7-a' '-mtune=cortex-a9' '-mfloat-abi=soft' '-mthumb' '-mtls-dialect=gnu'

aarch64_be-elf

Toolchains for big-endian, 64-bit ARMv8 for bare-metal systems 

      • gcc-linaro-*x86_64_aarch64_be-elf.tar.xz 
        • Linux 64-bit binaries for the Aarch64 bare-metal Big Endian cross-toolchain 
        gcc-linaro-*i686_aarch64_be-elf.tar.xz 
        • Linux 32-bit binaries for the Aarch64 bare-metal Big Endian cross-toolchain 
        gcc-linaro-*i686-mingw32_aarch64_be-elf.tar.xz
        •      Windows 32-bit binaries for the Aarch64 bare-metal Big Endian cross-toolchain

Default command line options (gcc -v -c): '-march=armv8-a' '-mbig-endian' '-mabi=lp64'

armeb-eabi

Toolchains for big-endian, soft-float, 32-bit ARMv7 (and earlier) for bare-metal systems 

      • gcc-linaro-*x86_64_armeb-eabi.tar.xz
        • Linux 64-bit binaries for the ARMv7 bare-metal Big Endian cross-toolchain
        gcc-linaro-*i686_armeb-eabi.tar.xz
        • Linux 32-bit binaries for the ARMv7 bare-metal Big Endian cross-toolchain
        gcc-linaro-*i686-mingw32_armeb-eabi.tar.xz
        •      Windows 32-bit binaries for the ARMv7 bare-metal Big Endian cross-toolchain

Default command line options (gcc -v -c): None, but 'gcc -S -v' produces '.cpu arm7tdmi' and '.fpu softvfp' in the .s file



Page viewed times

5 Comments

  1. Anonymous

    Hi,  i have one question, why don't release one package which support all configurations, and use different option for different use case? so many toolchains is hard to maintain. 

    1. Anonymous

      GCC does not yet tend to support targetting multiple CPUs, so the package would include several entire toolchanges. This could be made, but it would be quite large.

  2. Anonymous

    Good question!

  3. Anonymous

    Viewsonic G-tablet modified with Team DRH JB.Would like to install Ubuntu 9.10 Karmick.

    How? Thank You

    1. Hi, this request is out of scope for this document.