| Reading time: | 10 min |
| Last updated: | 27 Apr 2026 |
| Reading time: |
| 10 min |
| Last updated: |
| 27 Apr 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.
The
LLVM Embedded Toolchain for Arm
allows Cortex-M developers to build projects with the clang compiler.
Pre-built binaries are available for Windows (x86_64), macOS (x86_64 and Apple Silicon), and Linux (x86_64 and AArch64) hosts.
To download the latest release from GitHub, copy and paste the following URL into your browser:
The following step uses LLVM Embedded Toolchain for Arm version 19.1.5. The same step works with other versions. Replace the file used in this step with the file for your version of choice. To find the latest version, see LLVM Embedded Toolchain releases .
https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Windows-x86_64.zip
Unzip the download to a location of your choice on your host machine.
Open Windows Control Panel and add the LLVM bin directory to the Path.
Open a Command Prompt and
test your installation
.
To download the latest release from GitHub, copy and paste the following URL into your browser:
The following step uses LLVM Embedded Toolchain for Arm version 19.1.5. The same step works with other versions. Replace the file used in this step with the file for your version of choice. To find the latest version, see LLVM Embedded Toolchain releases .
https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Darwin-universal.dmg
Install the toolchain by clicking the dmg file and following the instructions.
Add the LLVM bin directory to your PATH:
export PATH=/Applications/LLVM-ET-Arm-19.1.5-Darwin-universal/bin:$PATH
The toolchain binaries might be quarantined. Navigate to the bin directory and use the xattr command to remove the quarantine:
cd /Applications/LLVM-ET-Arm-19.1.5-Darwin-universal/bin
find . -type f -perm +0111 | xargs xattr -d com.apple.quarantine
You can now test your installation .
The following steps assume Ubuntu Linux on an AArch64 host. Modify the filenames and paths as needed for other hosts.
Download the latest release using wget:
The following commands use LLVM Embedded Toolchain for Arm version 19.1.5. The same commands work with other versions. Replace the file used in these steps with the file for your version of choice. To find the latest version, see LLVM Embedded Toolchain releases .
wget https://github.com/ARM-software/LLVM-embedded-toolchain-for-Arm/releases/download/release-19.1.5/LLVM-ET-Arm-19.1.5-Linux-AArch64.tar.xz
Open a terminal application and use tar to extract the file:
tar xfJ LLVM-ET-Arm-19.1.5-Linux-AArch64.tar.xz -C $HOME
Add the LLVM bin directory to your PATH:
export PATH=$HOME/LLVM-ET-Arm-19.1.5-Linux-AArch64/bin:$PATH
You can now test your installation.
Use the --version option to verify the correct compiler is being invoked:
clang --version
The output is similar to:
clang version 19.1.5
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/ubuntu/LLVM-ET-Arm-19.1.5-Linux-AArch64/bin
Use a text editor to create an example source file with the name hello.c and the following code:
#include <stdio.h>
int main()
{
printf("hello");
return 0;
}
A number of compiler options are needed. For more information, see Using the toolchain .
To build for Armv6-M, run:
clang --target=armv6m-none-eabi -fno-exceptions -fno-rtti -lcrt0-semihost -lsemihost -T picolibc.ld -o hello_v6m hello.c
To build for Armv7-M, run:
clang --target=armv7m-none-eabi -fno-exceptions -fno-rtti -lcrt0-semihost -lsemihost -T picolibc.ld -o hello_v7m hello.c
The applications can be run on Fixed Virtual Platforms (FVP) .
There is no FVP release for macOS.
To run the Armv6-M example on Cortex-M0 FVP:
FVP_MPS2_Cortex-M0 -a hello_v6m
To run the Armv7-M example on Cortex-M3 FVP:
FVP_MPS2_Cortex-M3 -a hello_v7m
You’ll see the hello message on the console, as well as other diagnostic output from the FVP:
telnetterminal1: Listening for serial connection on port 5000
telnetterminal2: Listening for serial connection on port 5002
telnetterminal0: Listening for serial connection on port 5001
hello
Info: /OSCI/SystemC: Simulation stopped by user.
You’re now ready to use LLVM Embedded Toolchain for Arm.
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.