If you want to use Debian packages (corresponding to the ARM toolchain), you should install gcc-arm-none-eabi which provides C and C++ cross-compilers for 32-bit ARM, including Cortex-R processors:

apt-get install -y --no-install-recommends gcc-arm-none-eabi

The compiler command for C++ will then be arm-none-eabi-g++.

If you need the STL, you should also install libstdc++-arm-none-eabi-newlib:

apt-get install -y --no-install-recommends libstdc++-arm-none-eabi-newlib

armr5-none-eabi-g++ is (was) available in the Xilinx SDK; the relevant SDK nowadays would appear to be Vitis. For a container image you’d probably be best off installing it using the full unified installer archive. (I haven’t tried this so I can’t confirm that the armr5-none-eabi is included in current versions.)

Answer from Stephen Kitt on Stack Exchange
🌐
Launchpad
answers.launchpad.net › gcc-arm-embedded › +question › 272826
Question #272826 “armr5-none-eabi-gcc compiler” : Questions : GNU Arm Embedded Toolchain
October 23, 2015 - I used the following flag to compile my code on cortex R5F. armr5 compiler is of version 4.8.4. CFLAGS_CORTEX_R5 = -static -mlittle-endian -mcpu=cortex-r5 -mfloat-abi=softfp -mfpu=vfpv3-d16 -fsingle-precision-constant -Wdouble-promotion Notice that I have used vfpv3-d16 option, so I should use at most 16 double precision floating point registers (d0 - d15), which is supported on this ARM core.
Discussions

c++ - linking succeeds with arm-none-eabi-g++ but not arm-none-eabi-gcc - Stack Overflow
I am using the Launchpad Arm compiler tools. Specifically, arm-none-eabi-g++ and arm-none-eabi-gcc from: (GNU Tools for ARM Embedded Processors) 5.2.1 20151202 (release) [ARM/embedded-5-branch More on stackoverflow.com
🌐 stackoverflow.com
Whats "gcc-arm-none-eabi" toolchain ??
Gcc-arm-none-eabi is the gcc compiler toolchain for arm outside of a hosted environment. This means that it compiles bare metal code: code running without an already existing OS. ‘Normal’ gcc uses libraries from the system where its installed, so if you compile a hello world links to and uses the standard library. Gcc-arm would mean that the compiler is a cross compiler: its installed on your system but it compiles for arm. On an arm processor could run a full fledged linux environment so a gcc-arm-aarch64-linux or something like that would compile a program on your pc for that arm system running linux. Now there are meriads of arm systems not running linux which needs code to be compiled for as well. This is the place for the none-eabi variant: it does not use any system library and uses a standard interface for calling functions and other stuff. So in other words this is just the bare metal cross compiler for arm systems. And who makes these? Anyone who wants to. Gcc is an open source project and anyone could compile the toolchain. With compiling you can ‘select’ your version: do you want to build a linux-on-riscv compiler running on your pc? Definitely possible! The linux distro repos contain a couple of standard versions of gcc of which arm-none-eabi is one More on reddit.com
🌐 r/embedded
31
61
September 10, 2025
Adaptive Support
AMD Adaptive SoC & FPGA support resources, formerly known as "Xilinx Support", include our Knowledge Base, Community Forums, Blogs, and other support options. More on forums.xilinx.com
🌐 forums.xilinx.com
June 19, 2019
arm-none-eabi-gcc toolchain is not working - Stack Overflow
./configure --host=arm-none-eabi checking build system type... i686-pc-linux-gnu checking host system type... arm-none-eabi checking target system type... arm-none-eabi checking for arm-none-eabi-gcc... arm-none-eabi-gcc checking whether the C compiler works... More on stackoverflow.com
🌐 stackoverflow.com
🌐
GitHub
github.com › mesonbuild › meson › issues › 2392
Don't require a native compiler when doing only cross-compilation · Issue #2392 · mesonbuild/meson
September 29, 2017 - $ cat armr5_cross.txt [binaries] c = ['ccache', 'armr5-none-eabi-gcc'] cpp = ['ccache', 'armr5-none-eabi-g++'] ar = 'armr5-none-eabi-ar' strip = 'armr5-none-eabi-strip' [properties] c_args = ['-DARMR5', '-mcpu=cortex-r5', '-mfloat-abi=softfp', '-mfpu=vfpv3-d16', '-nostdlib'] cpp_args = ['-DARMR5', '-mcpu=cortex-r5', '-mfloat-abi=softfp', '-mfpu=vfpv3-d16', '-nostdlib'] [host_machine] system = 'notlinux' cpu_family = 'arm' cpu = 'r5' endian = 'little'
Author   mesonbuild
🌐
Arm Developer
developer.arm.com › downloads › - › arm-gnu-toolchain-downloads
Arm GNU Toolchain Downloads – Arm Developer
$ arm-none-eabi-gcc -mcpu=cortex-m7 -mfloat-abi=hard $ arm-none-eabi-gcc -mcpu=cortex-r5 -mfloat-abi=hard -mthumb · Example with floating-point and Advanced SIMD instructions with soft-float ABI: $ arm-none-eabi-gcc -mcpu=cortex-a53 -mfloat-abi=softfp -mthumb
🌐
GNU
gcc.gnu.org › legacy-ml › gcc-help › 2019-05 › msg00047.html
Jeroen Koekkoek - Override function that returns thread-local storage pointer on armr5
May 14, 2019 - I've used this trick before on a MicroBlaze based platform, where I simply implemented the __get_tls_addr function and once on a Cortex-M4, where I only needed to implement the __aeabi_read_tp function. The latter was not using gcc by the way. The armr5-none-eabi-gcc compiler mentions the -mtp= ...
🌐
Reddit
reddit.com › r/embedded › whats "gcc-arm-none-eabi" toolchain ??
r/embedded on Reddit: Whats "gcc-arm-none-eabi" toolchain ??
September 10, 2025 -

gcc-arm-none-eabi toolchain, my major question is, why is it made and for what problem to solve ? before toolchains existed, what were the methods used to program a chip ??

also, who makes toolchains and how are they doing it ??

Top answer
1 of 12
186
Gcc-arm-none-eabi is the gcc compiler toolchain for arm outside of a hosted environment. This means that it compiles bare metal code: code running without an already existing OS. ‘Normal’ gcc uses libraries from the system where its installed, so if you compile a hello world links to and uses the standard library. Gcc-arm would mean that the compiler is a cross compiler: its installed on your system but it compiles for arm. On an arm processor could run a full fledged linux environment so a gcc-arm-aarch64-linux or something like that would compile a program on your pc for that arm system running linux. Now there are meriads of arm systems not running linux which needs code to be compiled for as well. This is the place for the none-eabi variant: it does not use any system library and uses a standard interface for calling functions and other stuff. So in other words this is just the bare metal cross compiler for arm systems. And who makes these? Anyone who wants to. Gcc is an open source project and anyone could compile the toolchain. With compiling you can ‘select’ your version: do you want to build a linux-on-riscv compiler running on your pc? Definitely possible! The linux distro repos contain a couple of standard versions of gcc of which arm-none-eabi is one
2 of 12
24
It contains the compiler, linker, and other helpful utilities to make code that can be loaded onto a microcontroller. Before any of those utilities existed, you could literally flip switches on a console to set your program in memory. You had to know the hex values for all your opcodes, and how each one expected parameters to be formatted. Programs were very limited. Compilers came along (like gcc) that took slightly more readable code (like assembly or C) and automatically converted them into a binary file. Then linkers showed up to automatically connect up multiple C files and create more complex programs. At the same time, utilities like gdb and openocd showed up to help get that binary file into the memory of a microcontroller, using protocols like swd or jtag. Specifically though, arm (the company that creates the arm instruction set and cortex architecture, that chip makers like ST/Apple/etc license and use), maintains arm-none-eabi-gcc and provides it for free. It has some competition from paid compilers like Keil and IAR, but in most cases gcc is the best choice.
Find elsewhere
🌐
AMD Customer Community
forums.xilinx.com › t5 › Embedded-Development-Tools › armr5-none-eabi-gcc-build-commands › td-p › 985367
Adaptive Support
June 19, 2019 - This site is a landing page for AMD Adaptive SoC and FPGA support resources including our knowledge base, community forums, and links to even more.
🌐
GitHub
github.com › marketplace › actions › arm-none-eabi-gcc-gnu-arm-embedded-toolchain
arm-none-eabi-gcc GNU Arm Embedded Toolchain - GitHub Marketplace
If you need to pass the GCC path to a different action or step the path output exports it: - name: To access a step output, you need to provide an `id` uses: carlosperate/arm-none-eabi-gcc-action@v1 id: arm-none-eabi-gcc-action - name: The `path` to the toolchain executables can then be obtained as an output run: echo "The output path is ${{ steps.arm-none-eabi-gcc-action.outputs.path }}"
🌐
GNU
gcc.gnu.org › onlinedocs › gcc › ARM-Options.html
ARM Options (Using the GNU Compiler Collection (GCC))
Specify the register to be used for PIC addressing. For standard PIC base case, the default is any suitable register determined by compiler. For single PIC base case, the default is ‘R9’ if target is EABI based or stack-checking is enabled, otherwise the default is ‘R10’.
🌐
Arebatese
arebatese.gq › aa342c5c4d16b
We cannot provide a description for this page right now
🌐
Arm Developer
developer.arm.com › downloads › - › gnu-rm
Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer
gcc-arm-none-eabi-7-2018-q2-update-win32-sha1.exe Windows 32-bit Installer (Signed for Windows XP and Vista) MD5: 623960ecb4b347665541efd3868a4af9
🌐
Stack Overflow
stackoverflow.com › questions › 37679331 › arm-none-eabi-gcc-toolchain-is-not-working
arm-none-eabi-gcc toolchain is not working - Stack Overflow
./configure --host=arm-none-eabi checking build system type... i686-pc-linux-gnu checking host system type... arm-none-eabi checking target system type... arm-none-eabi checking for arm-none-eabi-gcc... arm-none-eabi-gcc checking whether the C compiler works...
🌐
GitHub
github.com › carlosperate › arm-none-eabi-gcc-action
GitHub - carlosperate/arm-none-eabi-gcc-action: GitHub Action to set-up the `arm-none-eabi-gcc` GNU Arm Embedded Toolchain. · GitHub
GitHub Action to set-up the `arm-none-eabi-gcc` GNU Arm Embedded Toolchain. - carlosperate/arm-none-eabi-gcc-action
Starred by 140 users
Forked by 26 users
Languages   TypeScript 93.6% | JavaScript 6.4%
🌐
Interrupt
interrupt.memfault.com › blog › best-firmware-size-tools
Tools for Firmware Code Size Optimization | Interrupt
June 6, 2019 - The simplest way to measure code size is to inspect the different sections of your elf file. The ARM GCC toolchain comes with a handy utility to do just that: arm-none-eabi-size.
🌐
Ubuntu
packages.ubuntu.com › bionic › gcc-arm-none-eabi
Ubuntu – Error
two or more packages specified (gcc-arm-none-eabi bionic) Content Copyright © 2025 Canonical Ltd.; See license terms. Ubuntu is a trademark of Canonical Ltd. Learn more about this site.
🌐
Launchpad
answers.launchpad.net › gcc-arm-embedded › +questions
Questions : GNU Arm Embedded Toolchain
The releases include the binaries and source packages, and are published without any warranty, but you can: * Report issues specific to the way a release was built or packaged on the Linaro Bugzilla: https://bugs.linaro.org/enter_bug.cgi?product=GNU Binary Toolchain * Ask questions about the Arm GNU Toolchain releases and read about previously answered ones on the Arm Community Compilers and Libraries forum: https://community.arm.com/support-forums/f/compilers-and-libraries-forum/ Launch...