8.115 --library_interface=lib

Generates code that is compatible with the selected library type.

Syntax

--library_interface=lib

Where lib is one of:

none

Specifies that the compiler output works with any ISO C90 library.

In general, the compiler avoids the use of AEABI-defined library functions. For example, this option suppresses the use of AEABI-defined functions that are introduced only as an optimization such as __aeabi_memcpy.

AEABI-defined library functions are only used to handle operations that do not have a short machine code equivalent. For example, the __aeabi_uidiv function is used for integer division where there is no divide instruction available in the target instruction set.

armcc

Specifies that the compiler output works with the ARM runtime libraries in ARM Compiler 4.1 and later.

armcc_c90

Behaves similarly to --library_interface=armcc. The difference is that references in the input source code to function names that are not reserved by C90, are not modified by the compiler. Otherwise, some C99 math.h function names might be prefixed with __hardfp_, for example __hardfp_tgamma.

aeabi_clib90

Specifies that the compiler output works with any ISO C90 library compliant with the ARM Embedded Application Binary Interface (AEABI).

aeabi_clib99

Specifies that the compiler output works with any ISO C99 library compliant with the AEABI.

aeabi_clib

Specifies that the compiler output works with any ISO C library compliant with the AEABI.

Selecting the option --library_interface=aeabi_clib is equivalent to specifying either --library_interface=aeabi_clib90 or --library_interface=aeabi_clib99, depending on the choice of source language used.

The choice of source language is dependent both on the command-line options selected and on the filename suffixes used.

aeabi_glibc

Specifies that the compiler output works with an AEABI-compliant version of the GNU C library.

rvct30

Specifies that the compiler output is compatible with RVCT 3.0 runtime libraries.

rvct30_c90

Behaves similarly to rvct30. In addition, specifies that the compiler output is compatible with any ISO C90 library.

rvct31

Specifies that the compiler output is compatible with RVCT 3.1 runtime libraries.

rvct31_c90

Behaves similarly to rvct31. In addition, specifies that the compiler output is compatible with any ISO C90 library.

rvct40

Specifies that the compiler output is compatible with RVCT 4.0 runtime libraries.

rvct40_c90

Behaves similarly to rvct40. In addition, specifies that the compiler output is compatible with any ISO C90 library.

Default

If you do not specify --library_interface, the compiler assumes --library_interface=armcc.

Usage

  • Use the option --library_interface=armcc to exploit the full range of compiler and library optimizations when linking.

  • Use an option of the form --library_interface=aeabi_* when linking with an ABI-compliant C library. Options of the form --library_interface=aeabi_* ensure that the compiler does not generate calls to any optimized functions provided by the ARM C library.

Note:

_hardfp options are not supported by ARM C libraries.

Example

If your code calls functions, provided by an embedded operating system, that replace functions provided by the ARM C library, then compile your code with the option --library_interface=aeabi_clib. This option disables calls to any special ARM variants of the library functions replaced by the operating system.

Non-ConfidentialPDF file icon PDF versionARM DUI0472M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.