The answer is no.

The tool chain you are referencing is old, and works for 32bit architectures.

You need this (ubuntu): sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

Answer from CraigDavid on Stack Overflow
🌐
Duetorun
duetorun.com › blog › 20230401 › arm-toolchain
Arm GNU Toolchain - ElseWhere
The executables for 32-bit are arm-linux-gnueabihf-gcc and arm-linux-gnueabihf-g++. The executables for 64-bit are aarch64-linux-gnu-gcc and aarch64-linux-gnu-g++.
Discussions

How to install aarch64-linux-gnu and arm-linux-gnueabihf in cygwin for cross compilation
Need process of installing cross compiler in cygwin. I have installed scons and need the process of installing cross compiler for arm . More on github.com
🌐 github.com
4
March 31, 2019
c - How can I build ARMv8 aarch32 binary? - Stack Overflow
I'm using Mediatek X20 dev board and gcc-linaro-6.3.1-2017.05 version for benchmark aarch64 vs aarch32. So I want to build binaries as 2 types of aarch32 abi : lp64, ilp32. From gcc manual, (@ [ More on stackoverflow.com
🌐 stackoverflow.com
embedded - What is the difference between aarch64-none-elf and arm-none-eabi? - Stack Overflow
From what I undestand, aarch64-none-elf targets 64-bit ARMv8-A, while arm-none-eabi targets 32-bit ARMv7 and earlier, it cannot compile for aarch64, right?. Aarch64-none-elf uses ELF, while arm-non... More on stackoverflow.com
🌐 stackoverflow.com
Cross-compilation from Arch Linux x86-64 to Raspberri Pi OS Armv8
Have you tried cross ? If your target is supported (it is in this case) it’s generally the easiest way to cross compile. More on reddit.com
🌐 r/rust
11
4
October 31, 2022
🌐
Arm Developer
developer.arm.com › downloads › - › gnu-a
Downloads | GNU-A Downloads – Arm Developer
Download the toolchain manifest file from the GNU Arm toolchain page on developer.arm.com, for example: gcc-arm-aarch64-none-elf-abe-manifest.txt. ... The built toolchain will be installed and available for use in the builds/destdir/x86_64-unknown-linux-gnu/bin/ directory.
🌐
Arm Developer
developer.arm.com › downloads › - › arm-gnu-toolchain-downloads
Arm GNU Toolchain Downloads – Arm Developer
For Linux, the binaries are provided as tarball files. For macOS, the binaries are provided as tarball files and pkg files. The sources for this release are provided in the source tar ball, arm-gnu-toolchain-src-snapshot-14.3.rel1.tar.xz, and includes the following items: ... $ md5sum --check arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz.asc arm-gnu-toolchain-14.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz: OK
🌐
Gitbook
cswang.gitbook.io › soc › chapter1
ARM and AArch64 Target Triples | SoC
April 12, 2020 - 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 · Little-endian is the default bit ordering on ARM. Toolchains for little-endian, 64-bitARMv8for GNU/Linux systems · gcc-linaro-*x86_64_aarch64-linux-gnu.tar.xz ·
🌐
GitHub
github.com › ARM-software › ComputeLibrary › issues › 661
How to install aarch64-linux-gnu and arm-linux-gnueabihf in cygwin for cross compilation · Issue #661 · ARM-software/ComputeLibrary
March 31, 2019 - How to install aarch64-linux-gnu and arm-linux-gnueabihf in cygwin for cross compilation#661 · Copy link · Labels · Help wanted · BhaskarsarmaP · opened · on Mar 31, 2019 · Issue body actions · Need process of installing cross compiler in cygwin. I have installed scons and need the process of installing cross compiler for arm .
Author   BhaskarsarmaP
🌐
Arm Learning
learn.arm.com › install-guides › gcc › cross
Cross-compiler | Arm Learning Paths
Applications can be compiled for 32-bit or 64-bit Arm Linux systems. The executables for 32-bit are arm-linux-gnueabihf-gcc and arm-linux-gnueabihf-g++. The executables for 64-bit are aarch64-linux-gnu-gcc ...
Find elsewhere
🌐
Linaro
linaro.org › downloads
Downloads | Linaro
GNU Toolchain plays an essential role in the development of Linux. Created by the GNU Project, it is a group of programming tools used for developing software applications and operating systems. The official Arm releases of the pre-built GNU cross-toolchain for AArch64 and ARM 32-bit A-Profile cores are available on the Arm Developer website.
🌐
Debian
packages.debian.org › sid › gcc-arm-linux-gnueabihf
Debian -- Details of package gcc-arm-linux-gnueabihf in sid
This is a dependency package providing the default GNU C cross-compiler for the armhf architecture.
🌐
Linux-Sunxi
linux-sunxi.org › Toolchain
Toolchain - linux-sunxi.org
January 22, 2025 - These days, linux distributions package armhf, armel and aarch64 toolchains for you.
🌐
Acmesystems
acmesystems.it › arm9_toolchain
Install the ARM cross compiler toolchain on your Linux PC
This article illustrates how to install on a Linux PC the complete toolchain to cross compile the Linux Kernel, device drivers and applications for the Acme Systems Linux board · This procedure has been tested on Debian "Bookworm" 12
🌐
Jensd's I/O buffer
jensd.be › 1126 › linux › cross-compiling-for-arm-or-aarch64-on-debian-or-ubuntu
Cross compiling for arm or aarch64 on Debian or Ubuntu | Jensd's I/O buffer
January 26, 2021 - But here we need to specify the build and host platform so that we want to end up with a binary (statically linked) for ARM: jensd@deb10:~/strace-5.10$ ./configure --build x86_64-pc-linux-gnu --host aarch64-linux-gnu LDFLAGS="-static -pthread" --enable-mpers=check checking for a BSD-compatible install...
🌐
Texas Instruments
software-dl.ti.com › jacinto7 › esd › processor-sdk-linux-rt-jacinto7 › 08_06_01_02 › exports › docs › linux › Overview › GCC_ToolChain.html
1.1.4. GCC ToolChain — Processor SDK Linux for J721e Documentation
The name of the toolchain binaries have also been updated from older versions of the SDK. Current SDK ARMv8 toolchains use a prefix of “aarch64-linux-gnu-” For example, the new toolchain’s gcc compiler is named aarch64-linux-gnu-gcc.
🌐
NXP Community
community.nxp.com › t5 › i-MX-Processors › What-s-the-difference-between-arm-linux-arm-none-linux-gnueabi › td-p › 258887
Solved: What's the difference between arm-linux- / arm-none-linux-gnueabi- / arm-fsl-linux-gnueabi- in LTIB? - NXP Community
March 25, 2014 - 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.
🌐
Arch Linux
aur.archlinux.org › packages › arm-linux-gnueabihf-gcc
AUR (en) - arm-linux-gnueabihf-gcc
arm-linux-gnueabihf-gcc-stage2 ... with -- arm-linux-gnueabihf-gcc-stage1. IMO, the stage[12] packages should not be separate AUR packages. This process involves cloning the gcc repo three times and the glibc repo twice. Due to all of this, building the toolchain will take over 11GB of space. In case it helps anyone, here's the current functional process until this is fixed and/or streamlined: Create and configure an isolated PGP keyring directory for AUR: (umask 077 && mkdir -p ~/.gnupg-aur) export ...
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

🌐
Programmersought
programmersought.com › article › 2030933178
The difference between arm-linux-gnueabihf, aarch64-linux-gnu and other ARM cross-compilation GCC - Programmer Sought
Upgrade the cross-compilation environment, arm-linux-gnueabihf-gcc is upgraded to 6, Your GCC is older than 6.0 and is not supported · Linaro: The difference between cross-compiler arm-linux-gnueabi and arm-linux-gnueabihf