Here is an excellent doc.

Tool chains have a loose name convention like arch [-vendor] [-os] - eabi

 arch -    refers to target architecture (which in our case is ARM)
 vendor -  refers to toolchain supplier
 os -      refers to the target operating system
 eabi -    refers to Embedded Application Binary Interface

some illustrations as follows :

  • arm-none-eabi - This tool chain targets for ARM architecture, has no vendor, does not target an operating system and complies with the ARM EABI.
  • arm-none-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. It is used to target ARM-based Linux systems.
Answer from zhigang on Stack Overflow
🌐
GNU
gcc.gnu.org › onlinedocs › gcc › ARM-Options.html
ARM Options (Using the GNU Compiler Collection (GCC))
You can also set the fpu name at function level by using the target("fpu=") function attributes (see ARM Attributes) or pragmas (see Function Specific Option Pragmas). ... Specify the format of the __fp16 half-precision floating-point type. Permissible names are ‘none’, ‘ieee’, and ‘alternative’; the default is ‘none’, in which case the __fp16 type is not defined.
🌐
GitHub
github.com › marketplace › actions › arm-none-eabi-gcc-gnu-arm-embedded-toolchain
arm-none-eabi-gcc GNU Arm Embedded Toolchain - GitHub Marketplace
- name: To create an environmental variable with the toolchain path provide a name via the `path-env-var` input uses: carlosperate/arm-none-eabi-gcc-action@v1 with: path-env-var: ARM_NONE_EABI_GCC_PATH - name: The path will be exported to that environmental variable name run: echo "The output path is $ARM_NONE_EABI_GCC_PATH" The changes can be found in the CHANGELOG.md file, or the GitHub Releases notes. MIT License. This project is a fork of fiam/arm-none-eabi-gcc, copyright @fiam (thanks for the awesome work Alberto!
🌐
The Rust Programming Language
doc.rust-lang.org › rustc › platform-support › arm-none-eabi.html
arm-none-eabi - The rustc book
This documentation covers details that apply to a range of bare-metal targets for 32-bit Arm CPUs. The arm-none-eabi flavor of the GNU compiler toolchain is often used to assist compilation to these targets.
🌐
Arm Community
community.arm.com › support-forums › f › armds-forum › 5625 › key-difference-between-gcc-arm-none-eabi-and-arm-eabi
Key difference between GCC arm-none-eabi and arm-eabi
July 29, 2015 - Have a question about working on Arm technology? Browse our support forums for solutions to your questions, answer questions from fellow community members and get help from Arm experts.
🌐
GitHub
github.com › xpack-dev-tools › arm-none-eabi-gcc-xpack
GitHub - xpack-dev-tools/arm-none-eabi-gcc-xpack: A binary distribution of the Arm Embedded GCC toolchain · GitHub
A binary distribution of the Arm Embedded GCC toolchain - xpack-dev-tools/arm-none-eabi-gcc-xpack
Starred by 273 users
Forked by 32 users
Languages   C 95.5% | MDX 3.2% | Shell 0.4% | TypeScript 0.3% | C++ 0.2% | Linker Script 0.2%
Top answer
1 of 5
49

It turned out that ARM decided to make our life easier (sarcasm) by deprecating the use of PPA - their page at launchpad now has an anouncement: "... all new binary and source packages will not be released on Launchpad henceforth ...".

So, to make use of their latest arm-none-eabi-gdb you have to install gcc-arm-embedded manually.

Remove arm-none-eabi-gcc from your system:

sudo apt remove gcc-arm-none-eabi

Download latest version (Linux x86_64 Tarball) from their website, check its MD5. Unpack it into some directory. I used /usr/share/ :

sudo tar xjf gcc-arm-none-eabi-YOUR-VERSION.bz2 -C /usr/share/

Create links so that binaries are accessible system-wide:

sudo ln -s /usr/share/gcc-arm-none-eabi-YOUR-VERSION/bin/arm-none-eabi-gcc /usr/bin/arm-none-eabi-gcc 
sudo ln -s /usr/share/gcc-arm-none-eabi-YOUR-VERSION/bin/arm-none-eabi-g++ /usr/bin/arm-none-eabi-g++
sudo ln -s /usr/share/gcc-arm-none-eabi-YOUR-VERSION/bin/arm-none-eabi-gdb /usr/bin/arm-none-eabi-gdb
sudo ln -s /usr/share/gcc-arm-none-eabi-YOUR-VERSION/bin/arm-none-eabi-size /usr/bin/arm-none-eabi-size
sudo ln -s /usr/share/gcc-arm-none-eabi-YOUR-VERSION/bin/arm-none-eabi-objcopy /usr/bin/arm-none-eabi-objcopy

Install dependencies. ARM's "full installation instructions" listed in readme.txt won't tell you what dependencies are - you have to figure it out by trial and error. In my system I had to manually create symbolic links to force it to work:

sudo apt install libncurses-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

Check if it works:

arm-none-eabi-gcc --version
arm-none-eabi-g++ --version
arm-none-eabi-gdb --version
arm-none-eabi-size --version
2 of 5
10

I've wrapped the script here by @kmhallen into a semi-automated debian package builder here: https://gitlab.com/alelec/arm-none-eabi-gcc-deb/-/releases

Installing a package like this means you can skip the tedious manual symlinks to put tools on the path, and just as importantly you can uninstall / upgrade to newer packages (assuming I remember to make more packages)

🌐
Debian
packages.debian.org › sid › gcc-arm-none-eabi
Package: gcc-arm-none-eabi (15:15.2.rel1.1-3 and others)
dep: binutils-arm-none-eabi [ia64, sh4] GNU assembler, linker and binary utilities for ARM Cortex-R/M processors · dep: binutils-arm-none-eabi (>= 2.45.50) [not ia64, sh4] dep: libc6 (>= 2.36) [sh4] GNU C Library: Shared libraries also a virtual package provided by libc6-udeb ·
Find elsewhere
🌐
Debian
packages.debian.org › buster › gcc-arm-none-eabi
Details of package gcc-arm-none-eabi in buster
two or more packages specified (gcc-arm-none-eabi buster) See our contact page to get in touch. Content Copyright © 1997 - 2026 SPI Inc.; See license terms. Debian is a trademark of SPI Inc. Learn more about this site.
🌐
Ubuntu
launchpad.net › ubuntu › +source › gcc-arm-none-eabi
gcc-arm-none-eabi package : Ubuntu - Launchpad
The following unsupported and untrusted Personal Archives (PPAs) provide packages of 'gcc-arm-none-eabi':
🌐
Linux Mint Forums
forums.linuxmint.com › board index › main edition support › software & applications
Getting to work ARM-compiler arm-none-eabi with Linux 21 Vanessa - Linux Mint Forums
November 28, 2022 - sudo ln -s /usr/share/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc /usr/bin/arm-none-eabi-gcc ... 3)Install dependency sudo apt install libncurses-dev 4) Create links 5) From here on: I can call arm-none-eabi-gcc and g++ version without an error.
🌐
Arch Linux
archlinux.org › packages › extra › x86_64 › arm-none-eabi-gcc
Arch Linux - arm-none-eabi-gcc 14.2.0-2 (x86_64)
arm-none-eabi-binutils · libisl · libmpc · zlib · zstd · arm-none-eabi-newlib (optional) - Standard C library optimized for embedded systems · arm-none-eabi-newlib (make) gmp (make) mpfr (make) qmk · klipper (optional) arm-none-eabi-newlib (make) easy-pdk (make) efifs (make) libopencm3 ...
🌐
Homebrew
formulae.brew.sh › formula › arm-none-eabi-gcc
arm-none-eabi-gcc — Homebrew Formulae
brew install arm-none-eabi-gcc · GNU compiler collection for arm-none-eabi · https://gcc.gnu.org · License: GPL-3.0-or-later WITH GCC-exception-3.1 · Development: Pull requests · Formula JSON API: /api/formula/arm-none-eabi-gcc.json · Formula code: arm-none-eabi-gcc.rb on GitHub ·
🌐
Debian
packages.debian.org › bookworm › gcc-arm-none-eabi
Debian -- Details of package gcc-arm-none-eabi in bookworm
dep: binutils-arm-none-eabi · GNU assembler, linker and binary utilities for ARM Cortex-R/M processors · dep: libc6 (>= 2.36) GNU C Library: Shared libraries also a virtual package provided by libc6-udeb · dep: libgcc-s1 (>= 3.0) [not armel, armhf] GCC support library ·
🌐
SoC
s-o-c.org › arm-none-eabi-gcc
arm-none-eabi-gcc - SoC
September 12, 2023 - The “arm-none-eabi” prefix refers specifically to the ABI (Application Binary Interface) used by the toolchain which is configured for bare-metal ARM Cortex cores without an OS.
🌐
Arch Linux
aur.archlinux.org › packages › gcc-arm-none-eabi-bin
AUR (en) - gcc-arm-none-eabi-bin - Arch Linux
diff --git a/PKGBUILD b/PKGBUILD index c9ee978..4dee8a1 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,7 +2,7 @@ # Previous Maintainer: 2bluesc <2bluesc gmail.com> # Maintainer: Vadzim Dambrouski <pftbest gmail.com> pkgname=gcc-arm-none-eabi-bin -pkgver=13.2.rel1 +pkgver=13.3.rel1 pkgrel=1 pkgdesc="GNU Tools ARM Embedded Processors (binary distribution, includes newlib, does NOT include GDB)" arch=('aarch64' 'x86_64') @@ -21,12 +21,12 @@ conflicts=('gcc-arm-none-eabi' 'arm-none-eabi-newlib' ) url='https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downl