You copied the Doc URL to your clipboard.

Selection of ARM C and C++ library variants based on build options

When you build your application, you must make certain choices. For example:

Target Architecture and instruction set

A32 or T32 (AArch32 state instruction sets).


Microlib is not supported in AArch64 state.

Byte order

Only little-endian is supported.

Floating-point support


In ARMv8, VFP hardware is integral to the architecture. Software floating-point is supported for AArch32 state, but is not supported for AArch64 state.

Software (SoftVFP), hardware (VFP), software or hardware with half-precision or double-precision extensions, or no floating-point support.

Position independence

Different ways to access your data are as follows:

  • By absolute address.

  • Relative to sb (read/write position-independent).

  • Relative to pc (fpic).

Different ways to access your code are as follows:

  • By absolute address when appropriate.

  • Relative to pc (read-only position independent).

The standard C libraries provide variants to support all of these options.

Position-independent C++ code can only be achieved with --apcs=/fpic.


Position independence is supported only in AArch32 state, and is not supported in microlib.

When you link your assembler code, C or C++ code, the linker selects appropriate C and C++ library variants compatible with the build options you specified. There is a variant of the ISO C library for each combination of major build options.

See also

Was this page helpful? Yes No