Arm Toolchain for Linux
About this Install Guide
| Reading time: | 15 min |
| Last updated: | 26 Aug 2026 |
| Reading time: |
| 15 min |
| Last updated: |
| 26 Aug 2026 |
This guide shows you how to install and use the tool with the most common configuration. For advanced options and complete reference information, see the official documentation. Some install guides also include optional next steps to help you explore related workflows or integrations.
Arm Toolchain for Linux
(ATfL) is an open-source LLVM-based compiler suite for AArch64 Linux systems. It includes the armclang C/C++ compiler, the armflang Fortran compiler, and
Arm Performance Libraries
(ArmPL). ATfL is optimized for Arm Neoverse cores and targets scientific computing, HPC, AI, and cloud-native workloads.
ATfL replaces the older Arm Compiler for Linux (ACfL), which reached end of life with version 24.10. If you are migrating from ACfL, see the Arm Toolchain for Linux User Guide for guidance.
ATfL runs on 64-bit Arm Linux machines and supports all 64-bit Arm-based server-class hardware . It isn’t a cross-compiler.
You don’t need any additional license to use Arm Toolchain for Linux.
Before you begin
Confirm you are using an Arm machine by running:
uname -m
The expected output is:
aarch64
If you see a different result, you aren’t using an Arm computer running 64-bit Linux.
ATfL is supported on the following Linux distributions:
- Ubuntu 22.04 and 24.04
- Red Hat Enterprise Linux 8, 9, and 10
- Amazon Linux 2023
- SUSE Linux Enterprise Server 15 and 16
Install ATfL using the system package manager
The recommended way to install ATfL is through the Arm Toolchains repository . This method installs ATfL and Arm Performance Libraries using your system package manager and handles updates automatically.
Ubuntu
Install the Arm Toolchains repository package and then install ATfL:
curl -O https://developer.arm.com/packages/arm-toolchains/ubuntu/pool/arm-toolchains-repository_2-2~noble_all.deb
sudo dpkg -i arm-toolchains-repository_2-2~noble_all.deb
sudo apt update
sudo apt install -y arm-toolchain-for-linux
The commands shown are for Ubuntu 24.04. For Ubuntu 22.04, replace noble with jammy in the repository package filename. For other distributions, see the
Arm Toolchains repository install guide
.
Red Hat Enterprise Linux 8
Install the repository package and then install ATfL:
sudo dnf install -y https://developer.arm.com/packages/arm-toolchains/rhel/el8/aarch64/arm-toolchains-repository-2-2.el8.noarch.rpm
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y arm-toolchain-for-linux
Red Hat Enterprise Linux 9
Install the repository package and then install ATfL:
sudo dnf install -y https://developer.arm.com/packages/arm-toolchains/rhel/el9/aarch64/arm-toolchains-repository-2-2.el9.noarch.rpm
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y arm-toolchain-for-linux
Red Hat Enterprise Linux 10
Install the repository package and then install ATfL:
sudo dnf install -y https://developer.arm.com/packages/arm-toolchains/rhel/el10/aarch64/arm-toolchains-repository-2-2.el10.noarch.rpm
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y arm-toolchain-for-linux
Amazon Linux 2023
Install the repository package and then install ATfL:
sudo dnf install -y https://developer.arm.com/packages/arm-toolchains/amazonlinux/al2023/aarch64/arm-toolchains-repository-2-2.al2023.noarch.rpm
sudo dnf clean all
sudo dnf makecache
sudo dnf install -y arm-toolchain-for-linux
SUSE Linux Enterprise Server 15
Install the repository package and then install ATfL:
sudo zypper install -y https://developer.arm.com/packages/arm-toolchains/sles/sles15/aarch64/arm-toolchains-repository-2-2.sles15.noarch.rpm
sudo zypper clean
sudo zypper refresh
sudo zypper install -y arm-toolchain-for-linux
SUSE Linux Enterprise Server 16
Install the repository package and then install ATfL:
sudo zypper install -y https://developer.arm.com/packages/arm-toolchains/sles/sles16/aarch64/arm-toolchains-repository-2-2.sles16.noarch.rpm
sudo zypper clean
sudo zypper refresh
sudo zypper install -y arm-toolchain-for-linux
Set up the environment
ATfL installs to /opt/arm/arm-toolchain-for-linux. You need to add the bin directory to your PATH before using the compilers.
Option 1: Source the environment script
Source the provided env.bash script to configure your shell:
source /opt/arm/arm-toolchain-for-linux/env.bash
To load the environment automatically in new shells, add it to your .bashrc:
echo 'source /opt/arm/arm-toolchain-for-linux/env.bash' >> $HOME/.bashrc
source $HOME/.bashrc
Option 2: Use environment modules
ATfL provides module files for use with
Environment Modules
. Install the environment-modules package if it isn’t already present:
sudo apt install -y environment-modules
Set up your shell to use modules and load ATfL:
echo '. /usr/share/modules/init/bash' >> $HOME/.bashrc
echo 'module use /opt/arm/modulefiles' >> $HOME/.bashrc
source $HOME/.bashrc
module load atfl/22.1
To see all available modules, run:
module avail
Verify installation
After setting up the environment, verify the compiler versions:
armclang --version
The output is similar to:
Arm Toolchain for Linux 22.1.0 clang version 22.1.0 (https://github.com/arm/arm-toolchain.git c95792353373404441df364b5a762338e5642230)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/arm/arm-toolchain-for-linux/bin
Configuration file: /opt/arm/arm-toolchain-for-linux/bin/clang.cfg
Arm Toolchain ID: L0054 (b1c6e086)
Also verify the Fortran compiler:
armflang --version
The output is similar to:
Arm Toolchain for Linux 22.1.0 flang version 22.1.0 (https://github.com/arm/arm-toolchain.git c95792353373404441df364b5a762338e5642230)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/arm/arm-toolchain-for-linux/bin
Configuration file: /opt/arm/arm-toolchain-for-linux/bin/flang.cfg
Arm Toolchain ID: L0054 (b1c6e086)
Get started with the C/C++ compiler
Create a text file named hello.c with the following contents:
#include <stdio.h>
int main()
{
printf("Hello, C World!\n");
return 0;
}
Build and run the application:
armclang hello.c -o hello
./hello
The output is:
Hello, C World!
Get started with the Fortran compiler
Create a text file named hello.f90 with the following contents:
program hello
print *, 'Hello, Fortran World!'
end program hello
Build and run the application:
armflang hello.f90 -o hello
./hello
The output is:
Hello, Fortran World!
Get started with Arm Performance Libraries
ATfL automatically installs Arm Performance Libraries (ArmPL) as a dependency. ArmPL provides optimized BLAS, LAPACK, FFT, and sparse routines tuned for Arm Neoverse processors.
To load the ArmPL environment module:
module load arm-performance-libraries
This sets the ARMPL_DIR environment variable and configures LD_LIBRARY_PATH and PKG_CONFIG_PATH.
For detailed usage instructions, see the Arm Performance Libraries install guide and the ArmPL documentation .
Give Feedback
How would you rate this tool quick-install guide?
What is the primary reason for your feedback ?
Thank you! We're grateful for your feedback.
- Have more feedback? Log an issue on GitHub.
- Want to collaborate? Join our Discord server.