"AArch64" and "ARM64" refer to the same thing.

AArch64 is the 64-bit state introduced in the Armv8-A architecture. The 32-bit state which is backwards compatible with Armv7-A and previous 32-bit Arm architectures is referred to as AArch32. Therefore the GNU triplet for the 64-bit ISA is aarch64. The Linux kernel community chose to call their port of the kernel to this architecture arm64 rather than aarch64, so that's where some of the arm64 usage comes from.

The Apple-developed backend for AArch64 was called "ARM64" whereas the LLVM community-developed backend was called "AArch64" (as it is the canonical name for the 64-bit ISA). The two were merged in 2014 and the backend now is called "AArch64".

Answer from Kyrill on Stack Overflow
🌐
Juszkiewicz
marcin.juszkiewicz.com.pl › 2020 › 09 › 23 › 8-years-of-my-work-on-aarch64
8 years of my work on AArch64 – Marcin Juszkiewicz
September 23, 2020 - 12:38 hrw@puchatek:aarch64-oe-linux$ ./aarch64-oe-linux-gcc ~/devel/sources/hello.c -o hello 12:38 hrw@puchatek:aarch64-oe-linux$ file hello hello: ELF 64-bit LSB executable, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.39, not stripped 12:39 hrw@puchatek:aarc...
🌐
Texas Instruments E2E
e2e.ti.com › support › processors-group › processors › f › processors-forum › 1288638 › processor-sdk-am62x-aarch64-oe-linux-gcc-error-unrecognized-command-line-option--mthumb--mfpu-neon--mfloat-abi-hard
PROCESSOR-SDK-AM62X: aarch64-oe-linux-gcc: error: unrecognized command-line option ‘-mthumb’ ‘-mfpu=neon’ ‘-mfloat-abi=hard’ - Processors forum - Processors - TI E2E support forums
$ source ~/cross_compile/environment-setup [linux-devkit]:~/tmp> vi helloworld.c [linux-devkit]:~/tmp> $CC helloworld.c -o helloworld [linux-devkit]:~/tmp> file helloworld helloworld: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=45febe658a46c3c7f09bad18f9828b8ebb3f8f4e, for GNU/Linux 3.14.0, with debug_info, not stripped [linux-devkit]:~/tmp> [linux-devkit]:~/tmp> $CC -mthumb -mfpu=neon -mfloat-abi=hard aarch64-oe-linux-gcc: error: unrecognized command-line option ‘-mthumb’ aarch64-oe-linux-gcc: error: unrecognized command-line option ‘-mfpu=neon’ aarch64-oe-linux-gcc: error: unrecognized command-line option ‘-mfloat-abi=hard’ aarch64-oe-linux-gcc: fatal error: no input files compilation terminated.
Discussions

arm - What is the difference between different implemetation of arm64/aarch64 for Linux or other software to run on? - Unix & Linux Stack Exchange
For x86_64 architecture CPU, no matter it is made by Intel, AMD or VIA. The software for this architecture can run on it properly. However, as for arm64/aarch64(the difference of arm64/aarch64 is... More on unix.stackexchange.com
🌐 unix.stackexchange.com
August 7, 2018
Are ARM64 and AArch64 the same or thing?
AFAIK the correct term is aarch64. ARM64 is more of a colloquial term. But yes they are the same. More on reddit.com
🌐 r/asm
11
14
January 15, 2023
bitbake - Yocto error - aarch64-oe-linux-gcc: error: AM_CFLAGS: No such file or directory - Stack Overflow
I am facing an issue in compiling bitbake file on yocto. I am facing an error as mentioned below. | aarch64-oe-linux-gcc: error: AM_CFLAGS: No such file or directory | aarch64-oe-linux-gcc: error:... More on stackoverflow.com
🌐 stackoverflow.com
February 10, 2017
Linux on aarch64
There are plenty of distributions that provide aarch64/arm64 (equivalent names) builds of their repos and whatnot. Debian has Arm64Port with daily updated install images and a guide on how to install it. Arch Linux also has an ARM port; so does Void Linux, OpenSUSE, Mint, Fedora, etc. They're just ports you'll need to look for from the maintainers or are their own projects that work with the mainline. Alpine Linux is the only distribution that I can comment on for this purpose as it's the only one I've used on an aarch64 system, and it works plenty fine. Install was fairly easy, but you'll have to build up from base install if you want the system working like a normal laptop. Refer to initialising dbus and whatnot after finishing base install (dbus will allownyou to have a desktop session). I do very much like Alpine, though. More on reddit.com
🌐 r/linux4noobs
2
2
May 30, 2024
🌐
Texas Instruments
software-dl.ti.com › jacinto7 › esd › processor-sdk-linux-jacinto7 › latest › exports › docs › linux › Overview › GCC_ToolChain.html
1.1.5. GCC ToolChain Setup — Processor SDK Linux for J721e Documentation
host# export CROSS_COMPILE_64="${SDK_INSTALL_DIR}/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-" host# export SYSROOT_64="${SDK_INSTALL_DIR}/linux-devkit/sysroots/aarch64-oe-linux" host# export CC_64="${CROSS_COMPILE_64}gcc --sysroot=${SYSROOT_64}" host# export CROSS_COMPILE_32="${SDK_INSTALL_DIR}/k3r5-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-oe-eabi/arm-oe-eabi-"
Top answer
1 of 1
20

Your question could be interpreted as pretty broad, but I think what you're actually asking about is extremely specific. The fundamental difference between the different implementations of arm64 vs. aarch64.

At the heart of your question is that different CPUs provide different instruction sets. I typically reference this Wikipedia page titled: List of instruction sets, since it's the most complete list I've ever seen on the Internet.

Instruction sets

At the heart of every microprocessor is a set of instructions that it can perform. The interface to the instruction sets is what compilers convert higher level programming languages, such as C/C++, down to machine code. This machine code is the instructions from a CPU's instruction set. Incidentally instructions in an instruction set typically look like this:

x86 nasm - https://rosettacode.org/wiki/Bitwise_operations#x86_Assembly
    extern printf
    global main

    section .text
main
    mov eax, dword [_a]
    mov ecx, dword [_b]
    push    ecx
    push    eax

    and     eax, ecx
    mov ebx, _opand
    call    out_ops

NOTE: You'll also hear machine code referred to as assembly language.

arm64 vs. aarch64

With these 2 architectures I was able to find this answer from SO: titled: Differences between arm64 and aarch64, which stated the difference as follows:

AArch64 is the 64-bit state introduced in the Armv8-A architecture. The 32-bit state which is backwards compatible with Armv7-A and previous 32-bit Arm architectures is referred to as AArch32. Therefore the GNU triplet for the 64-bit ISA is aarch64. The Linux kernel community chose to call their port of the kernel to this architecture arm64 rather than aarch64, so that's where some of the arm64 usage comes from.

As far as I know the Apple backend for aarch64 was called arm64 whereas the LLVM community-developed backend was called aarch64 (as it is the canonical name for the 64-bit ISA) and later the two were merged and the backend now is called aarch64.

So aarch64 and arm64 refer to the same thing.

Some of your questions

You're asking questions that are too numerous to answer in a single question. I'll try and answer the most important though.

Q4. What makes me confused is the reason why archlinuxarm community doesn't provide stage rootfs tarball for only arm64 armel and etc. instead of different vendors' different products? Is it means that for example instruction set in DragonBoard 410c is different from Raspberry Pi 3? Or in other word, If I install Archlinuxarm for DragonBoard 410c to Raspberry Pi 3, What will happen? Can it boot properly?

For the specifics on this, you'd have to ask the Arch community why they opt to do things within that project. In terms of your question about running Archlinuxarm built specifically for the 410c on a Raspberry Pi 3, my suggestion would be to try it.

Both of those CPUs are ARM processors as shown here:

So my expectation would be that you'd be able to use the same binaries on both. Lastly I'd likely as a follow-up question on the Raspberry Pi Stackexchange site. There are numerous questions along the lines of what you're asking there, for example:

  • What instruction set is used on the Pi's ARM/Broadcom chip?

References

  • Linux on AArch64 ARM 64-bit Architecture - LinuxCon 2012
  • Raspberry Pi 3 vs DragonBoard
Find elsewhere
🌐
Linux Man Pages
linux.die.net › man › 1 › aarch64-linux-gnu-ar
aarch64-linux-gnu-ar(1) - Linux man page
The GNU ar program creates, modifies, and extracts from archives. An archive is a single file holding a collection of other files in a structure that makes ...
🌐
Arch Linux ARM
archlinuxarm.org › packages › aarch64 › linux-aarch64
linux-aarch64 (aarch64) | Packages | Arch Linux ARM
The Arch Linux™ name and logo are used under permission of the Arch Linux Project Lead.
🌐
Reddit
reddit.com › r/asm › are arm64 and aarch64 the same or thing?
r/asm on Reddit: Are ARM64 and AArch64 the same or thing?
January 15, 2023 -

Maybe this is a really basic question but I am just starting out with asm. and when I look at some videos about asm I can only find videos about AArch64 but never a bout arm64 I know I have arm architecture and I know I have 64 bit computer please correct me if the 64 in arm64 dosen’t stand for the number of bits in my computer the reason why I am asking this when they right some code in the video it always throws an error at my computer

🌐
Yoctopuce
yoctopuce.com › EN › article › using-our-libraries-under-linux-aarch64-or-arm64
Using our libraries under Linux aarch64 or arm64
December 21, 2018 - A few customers have asked us whether we supported Linux aarch64 or arm64, that is a Linux which uses an 64-bit ARM processor. The answer is yes and no. We don't provide pre-compiled binaries for these platforms, so by default our libraries ...
🌐
Stack Overflow
stackoverflow.com › questions › 42151624 › yocto-error-aarch64-oe-linux-gcc-error-am-cflags-no-such-file-or-directory
bitbake - Yocto error - aarch64-oe-linux-gcc: error: AM_CFLAGS: No such file or directory - Stack Overflow
February 10, 2017 - I am facing an issue in compiling bitbake file on yocto. I am facing an error as mentioned below. | aarch64-oe-linux-gcc: error: AM_CFLAGS: No such file or directory | aarch64-oe-linux-gcc: error:...
🌐
Linuxfound
events.static.linuxfound.org › images › stories › pdf › lcna_co2012_marinas.pdf pdf
1 Linux on AArch64 ARM 64-bit Architecture Catalin Marinas
Linux on AArch64 · ARM 64-bit Architecture · Catalin Marinas · LinuxCon North America 2012 · 2 · Introduction · § Previous ARM architecture, ARMv7, is 32-bit only · § Cortex-* processors family · § LPAE and virtualisation support · § The latest ARM architecture, ARMv8, ...
🌐
OSDev Wiki
wiki.osdev.org › AArch64
AArch64 - OSDev Wiki
The primary barrier to OSDev on AArch64 is the lack of standardization among peripherals; even once you've settled on a board to target, you may not have much documentation on how to program it. The situation is improving, as ARM SystemReady is a fairly new standard that aims to standardize ARM hardware. It allows for OSes like Windows, Linux...
🌐
LinuxVox
linuxvox.com › blog › linux-aarch64
A Comprehensive Guide to Linux on AArch64 Architecture — linuxvox.com
This blog post aims to provide a detailed overview of Linux on AArch64, including fundamental concepts, usage methods, common practices, and best practices.
🌐
GNU
gcc.gnu.org › onlinedocs › gcc › AArch64-Options.html
AArch64 Options (Using the GNU Compiler Collection (GCC))
The value ‘native’ is available on native AArch64 GNU/Linux and causes the compiler to pick the architecture of the host system. This option has no effect if the compiler is unable to recognize the architecture of the host system. When -march=native is given and no other -mcpu or -mtune ...
🌐
Wikipedia
en.wikipedia.org › wiki › AArch64
AArch64 - Wikipedia
February 23, 2026 - Announced in October 2011, ARMv8-A represents a fundamental change to the ARM architecture. It adds an optional 64-bit Execution state, named "AArch64", and the associated new "A64" instruction set, in addition to a 32-bit Execution state, "AArch32", supporting the 32-bit "A32" (original 32-bit ARM) and "T32" (Thumb/Thumb-2) instruction sets.
🌐
Arm Developer
developer.arm.com › downloads › - › gnu-a
Downloads | GNU-A Downloads – Arm Developer
The prebuilt binary bundles can be un-tarred and executed in place. Unpack the Linux cross toolchain: $ mkdir install-lnx $ tar x -C install-lnx -f <filename>.tar.xz $ PATH=`pwd`/install-lnx/aarch64/bin:$PATH