On Debian and derivatives, the package you’re looking for is gcc-arm-none-eabi:

apt install gcc-arm-none-eabi

To find this out yourself in future, install apt-file, update your indexes and use it to search for commands:

apt install apt-file
apt-file update
apt-file search bin/arm-none-eabi-gcc
Answer from Stephen Kitt on Stack Exchange
🌐
Arch Linux
archlinux.org › packages › extra › x86_64 › arm-none-eabi-gcc
Arch Linux - arm-none-eabi-gcc 14.2.0-2 (x86_64)
View the file list for arm-none-eabi-gcc · View the soname list for arm-none-eabi-gcc
🌐
Arch Linux
aur.archlinux.org › packages › gcc-arm-none-eabi-bin
AUR (en) - gcc-arm-none-eabi-bin - Arch Linux
# Original Maintainer: James Duley <jagduley gmail> # Previous Maintainer: 2bluesc <2bluesc gmail.com> # Maintainer: Vadzim Dambrouski <pftbest gmail.com> pkgname=gcc-arm-none-eabi-bin pkgver=10_2020_q4_major pkgrel=1 pkgdesc="GNU Tools ARM Embedded Processors (binary distribution, includes newlib, does NOT include GDB)" arch=('aarch64','x86_64') depends=('glibc') optdepends=( 'arm-none-eabi-gdb: GNU Debugger for ARM EABI' ) provides=('gcc-arm-none-eabi' 'arm-none-eabi-gcc' 'arm-none-eabi-binutils' 'arm-none-eabi-newlib' ) conflicts=('gcc-arm-none-eabi' 'arm-none-eabi-gcc' 'arm-none-eabi-binut
Discussions

software installation - Installing arm-none-eabi-gcc - Unix & Linux Stack Exchange
My guess is because I don't have the arm-none-eabi-gcc installed on my system but when I enter the command sudo apt-get install arm-none-eabi-gcc I get an error saying there is no such package. More on unix.stackexchange.com
🌐 unix.stackexchange.com
July 9, 2017
Arch Linux ARM • View topic - Failure trying to build arm-none-eabi-gcc (for qmk)
Ask questions about Arch Linux ARM. Please search before making a new topic. ... I'm trying to build `arm-none-eabi-gcc`, which is a dependency for `qmk`. So far I've built `arm-none-eabi-binutils` by simply changing `arch` to `aarm64`. Because of a circular dependency, I fetched ... More on archlinuxarm.org
🌐 archlinuxarm.org
March 22, 2022
Missing libraries in arm-none-eabi-* ?
That's a bare metal target, I don't think it should have gnu/linux runtime libraries and your program should probably not link those, if you target it. What is your code supposed to run on? Maybe you need arm-linux-gnueabi[hf]-gcc from the AUR? More on reddit.com
🌐 r/archlinux
6
3
December 14, 2020
Arch Linux ARM • View topic - Install arm-none-eabi-* Packages (Manually?)
Hi there, I'm trying to use my ... arm-none-eabi-gcc, arm-none-eabi-binutils, and arm-none-eabi-newlib to get the QMK tools working. These packages aren't showing up when I run pacman -Ss arm-none-eabi, so any help you could give me about how to install them would be much appreciated. If there's a repo somewhere with the packages already setup for ArchLinuxARM, definitely ... More on archlinuxarm.org
🌐 archlinuxarm.org
February 8, 2020
🌐
Arch Linux Man Pages
man.archlinux.org › man › arm-none-eabi-gcc.1.en
arm-none-eabi-gcc(1) — Arch manual pages
RS/6000 and PowerPC Options -mcpu=cpu-type -mtune=cpu-type -mcmodel=code-model -mpowerpc64 -maltivec -mno-altivec -mpowerpc-gpopt -mno-powerpc-gpopt -mpowerpc-gfxopt -mno-powerpc-gfxopt -mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb -mpopcntd -mno-popcntd -mfprnd -mno-fprnd -mcmpb -mno-cmpb -mhard-dfp -mno-hard-dfp -mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc -m64 -m32 -mxl-compat -mno-xl-compat -mpe -malign-power -malign-natural -msoft-float -mhard-float -mmultiple -mno-multiple -mupdate -mno-update -mavoid-indexed-addresses -mno-avoid-indexed-addresses -mfused-madd -mno-fused-madd -mbi
🌐
Arch Linux ARM
archlinuxarm.org › forum › viewtopic.php
Arch Linux ARM • View topic - Failure trying to build arm-none-eabi-gcc (for qmk)
March 22, 2022 - Ask questions about Arch Linux ARM. Please search before making a new topic. ... I'm trying to build `arm-none-eabi-gcc`, which is a dependency for `qmk`. So far I've built `arm-none-eabi-binutils` by simply changing `arch` to `aarm64`. Because of a circular dependency, I fetched `arm-none-eabi-newlib` from upstream archlinux (since it's an `arch=(any)` package, it works fine).
🌐
Arch Linux
security.archlinux.org › package › arm-none-eabi-gcc
arm-none-eabi-gcc - Arch Linux
Arch Linux · Packages · Forums · GitLab · Security · Download · issues · advisories · stats · login
Find elsewhere
🌐
CMake Discourse
discourse.cmake.org › code
How to remove -arch flag from arm-none-eabi-gcc in macos builds - Code - CMake Discourse
January 27, 2023 - I am cross compiling using arm-none-eabi-gcc on MacOS (M1) with rosetta x86. It does not make sense to have -arch x86_64b compilation flag as it gives error. v12 of arm-none-eabi-gcc (latest from brew) does not support -arch flag. cmake should not add this flag for eabi.
🌐
Arch Linux
archlinux.org › packages › extra › x86_64 › arm-none-eabi-gcc › files
Arch Linux - arm-none-eabi-gcc 14.2.0-2 (x86_64) - File List
usr/arm-none-eabi/include/c++/14.2.0/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/messages_members.h
Top answer
1 of 1
1

(I have the same confusion. And I try to answer it based on my investigation/understanding.)

Possible Naming Schema

According to quote from ARM GNU Toolchain Downloads page, bare metal and Linux are two different targets. And to differentiate from the target architecture, I call it target environment. And my way to tell it is: if it has "linux" in the name, it targets Linux environment, otherwise bare metal.

Available for bare-metal and Linux targets

So I interpret the toolchain names with below schema:

...<host_arch>-<target_arch>-<vendor>-<target_env+abi>
  1. Host OS: on what OS the toolchain itself runs. This is not part of the name but listed in the toolchain download page.

  2. Host Arch: on what machine architecture the toolchain itself runs.

  3. Target Arch: What machine architecture the toolchain's output targets.

  4. Vendor: Who offers the toolchain.

  5. Target Environment: can be bare metal or GNU/Linux.

  6. ABI: things like call conventions for assembly functions. This is related to both architecture and OS (link). So far I have seen: eabi/elf/linux-gnu/linux-gnueabi

About the "target_env+abi" part

I think this is the most confusing part. ABI is related to machine architecture, OS and language (link). And I think below naming convention holds based on the both the Target Arch + Target Environment.

  1. For AArch32 + bare metal, use "eabi".

  2. For AArch64 + bare metal, use "elf". (similar to eabi)

  3. For AArch32 + Linux/GNU, use "linux-gnueabi" (eabi generated by gcc)

  4. For AArch64 + Linux/GNU, use "linux-gnu" (maybe similar to 3 just like 2 to 1)

So I think all 4 of them are about EABI. But may have some subtle differences.

Hope some guru can shed some light here.

Examples

Let's take some toolchain names from the ARM GNU Toolchain Downloads page as examples.

Example 1:
arm-gnu-toolchain-14.2.rel1-mingw-w64-i686-arm-none-eabi.zip

  1. Host Arch = x86-64 because of the "mingw-w64-i686"

  2. Host OS = Windows because listed so.

  3. Target Arch = AArch32 because of the arm.

  4. Target Environment = bare metal because no linux in the name.

  5. Vendor: by open-source community, no specific vendor so it is none.

  6. ABI = eabi

Example 2:
arm-gnu-toolchain-14.2.rel1-mingw-w64-i686-arm-none-linux-gnueabihf.zip

  1. Host Arch = x86-64 because of the "mingw-w64-i686"

  2. Host OS = Windows because listed so.

  3. Target Arch = AArch32 because of the arm.

  4. Target Environment = GNU Linux because of the "linux" in the name.

  5. Vendor: by open-source community, no specific vendor so it is none.

  6. ABI = linux-gnueabi

Example 3:
arm-gnu-toolchain-14.2.rel1-mingw-w64-i686-aarch64-none-elf.zip

  1. Host Arch = x86-64 because of the "mingw-w64-i686"

  2. Host OS = Windows because listed so.

  3. Target Arch = AArch64 because of the "aarch64".

  4. Target Environment = bare metal because no linux in the name.

  5. Vendor: by open-source community, no specific vendor so it is none.

  6. ABI = elf

Example 4:
arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-eabi.tar.xz

  1. Host Arch = x86-64 because of the "x86_64"

  2. Host OS = Linux because listed so.

  3. Target Arch = AArch32 because of the "arm".

  4. Target Environment = bare metal because no linux in the name.

  5. Vendor: by open-source community, no specific vendor so it is none.

  6. ABI = eabi

Example 5:
arm-gnu-toolchain-14.2.rel1-aarch64-aarch64-none-linux-gnu.tar.xz

  1. Host Arch = AArch64 because of the first "aarch64"

  2. Host OS = Linux because listed in Linux-hosted section

  3. Target Arch = AArch64 because of the second "aarch64".

  4. Target Environment = GNU Linux because of the "linux" in the name.

  5. Vendor: by open-source community, no specific vendor so it is none.

  6. ABI = linux-gnu

To answer the original question

  • aarch64-none-elf: is for AArch64 bare metal, vendor is none

  • arm-none-eabi: is for AArch32 bare metal, vendor is none

🌐
GitHub
github.com › qmk › qmk_firmware › issues › 8809
[Bug] arm-none-eabi-gcc error on Arch Linux · Issue #8809 · qmk/qmk_firmware
April 15, 2020 - [Bug] arm-none-eabi-gcc error on Arch Linux#8809 · #9044 · Copy link · Labels · bughelp wanted · ghost · opened · on Apr 15, 2020 · No description provided. Reactions are currently unavailable · No one assigned · bughelp wanted · No type · No projects ·
Author   qmk
🌐
Arm Learning
learn.arm.com › install-guides › gcc › arm-gnu
Arm GNU Toolchain | Arm Learning Paths
$HOME/arm-gnu-toolchain-15.2.rel1-aarch64-arm-none-eabi/share/doc/gcc-arm-none-eabi/examples
🌐
manned.org
manned.org › pkg › arch › community › arm-none-eabi-gcc
Arch Linux / community / arm-none-eabi-gcc 13.1.0-1 - manned.org
arm-none-eabi-gcc(1) /usr/share/man/man1/arm-none-eabi-gcc.1.gz · arm-none-eabi-gcov(1) /usr/share/man/man1/arm-none-eabi-gcov.1.gz · arm-none-eabi-gcov-dump(1) /usr/share/man/man1/arm-none-eabi-gcov-dump.1.gz · arm-none-eabi-gcov-tool(1) /usr/share/man/man1/arm-none-eabi-gcov-tool.1.gz ·
🌐
Arch Linux
aur.archlinux.org › packages › arm-none-eabi-gcc53-linaro
AUR (en) - arm-none-eabi-gcc53-linaro - Arch Linux
May 29, 2016 - http://releases.linaro.org/components/toolchain/gcc-linaro/5.3-2016.02/gcc-linaro-5.3-2016.02.tar.xz · Hi WTX, can you contact me? I'd like to talk about removing a few of either my or your repositories, in order to clean up the AUR a bit. I'm a bit more open for suggestions nwo than I was 2 years ago ;-) @jhalfmoon: Ok, I've made fork package named: "arm-none-eabi-gcc53-linaro-alternative".
🌐
Arm Developer
developer.arm.com › downloads › - › arm-gnu-toolchain-downloads
Arm GNU Toolchain Downloads – Arm Developer
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=hard · Arm GNU Toolchain 15.2.rel1 supports a set of multilibs in each toolchain. To list all multilibs supported by any of the toolchain, use --print-multi-lib option. For example, ... To check which multilib is selected by the arm-none-eabi toolchain based on -mthumb, -mcpu, -mfpu and -mfloat-abi command line options:
🌐
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 ·
🌐
Arch Linux
archlinux.org › packages › extra › any › arm-none-eabi-newlib
Arch Linux - arm-none-eabi-newlib 4.5.0.20241231-2 (any)
Arch Linux · Home · Packages · Forums · Wiki · GitLab · Security · AUR · Download · Source Files / View Changes · Bug Reports / Add New Bug · Search Wiki / Manual Pages · Security Issues · Flagged out-of-date on 2026-02-04 · Download From Mirror · arm-none-eabi-gcc (make) libopencm3 ·
🌐
Raspberry Pi Forums
forums.raspberrypi.com › board index › hardware and peripherals › raspberry pi pico › sdk
[UPDATE: SOLVED] Apple (M2): arm-none-eabi-gcc is missing the nosys.specs file - Raspberry Pi Forums
September 2, 2023 - That was it! After I removed the old arm-gcc and installed the new everything worked. Thank you so so much for the very fast and easy help! ... Removing the *-eabi-* packages and installing gcc-arm-embedded fixed the same problem for me.