You copied the Doc URL to your clipboard.

Introduction to ARM® Compiler 6

ARM® Compiler 6 is ARM's most advanced C and C++ compilation toolchain for ARM Cortex processors. ARM Compiler 6 is co-developed alongside the ARM architecture. This has enabled the toolchain to be tuned to generate highly efficient code for embedded bare-metal applications ranging from small sensors to 64-bit devices.

ARM Compiler 6 is a component of ARM DS-5 Development Studio and Keil MDK-ARM. Alternatively, you can use ARM Compiler 6 as a standalone product. The list of features and processors supported by ARM Compiler 6 depends on the product edition. Refer to ARM Developer for the specification of the different standard products.

ARM Compiler 6 combines ARM's optimized tools and libraries, with a modern LLVM-based compiler framework. The components in ARM Compiler 6 are:


The compiler and integrated assembler. This compiles C, C++, and GNU assembly language sources.

The compiler is based on LLVM and Clang technology.

Clang is a compiler front end for LLVM, providing support for the C and C++ programming languages.


The legacy assembler. Only use armasm for legacy ARM syntax assembly code. Use the armclang assembler and GNU syntax for all new assembly files.

The linker. This combines the contents of one or more object files with selected parts of one or more object libraries to produce an executable program.

The archiver. This enables sets of ELF object files to be collected together and maintained in archives or libraries. You can pass such a library or archive to the linker in place of several ELF files. You can also use the archive for distribution to a third party for further application development.

The image conversion utility. This can also generate textual information about the input image, such as its disassembly and its code and data size.

ARM C++ libraries

The ARM C++ libraries are based on the LLVM libc++ project:

  • The libc++abi library is a runtime library providing implementations of low-level language features.
  • The libc++ library provides an implementation of the ISO C++ library standard. It depends on the functions provided by libc++abi.
ARM C libraries

The ARM C libraries provide:

  • An implementation of the library features as defined in the C standards.

  • Nonstandard extensions common to many C libraries.

  • POSIX extended functionality.

  • Functions standardized by POSIX.

Application development

A typical application development flow might involve the following:

  • Developing C/C++ source code for the main application (armclang).

  • Developing assembly source code for near-hardware components, such as interrupt service routines (armclang, or armasm for legacy assembly code).

  • Linking all objects together to generate an image (armlink).

  • Converting an image to flash format in plain binary, Intel Hex, and Motorola-S formats (fromelf).

The following figure shows how the compilation tools are used for the development of a typical application.

Figure 1-1 A typical tool usage flow diagram

ARM Compiler 6 has more functionality than the set of product features described in the documentation. The various features in ARM Compiler 6 can have different levels of support and guarantees. For more information, see Support level definitions.


If you are migrating your toolchain from ARM Compiler 5 to ARM Compiler 6, then refer to the ARM Compiler Migration and Compatibility Guide for information on how to migrate your source code and toolchain build options from ARM Compiler 5 to ARM Compiler 6. For a list of ARM Compiler 6 documents, see the documentation on ARM Developer.