ARMV5 build targets

The ARMV5 build target builds to the ARMV5 architecture. It is built to conform to a binary standard developed by ARM (the ABI for the ARM architecture). Details of the standard are published at http://www.arm.com/products/DevTools/ABI.html.

The situation is complicated by there existing two versions of the ARM ABI, referred to as v1 and v2 respectively, both of which are supported by the toolchain. This page explains the build target to use in each case. For more information on the differences in the toolchain used for each version of the ABI, see ABIv1 to ABIv2 toolchain changes.

This page includes the following sections, which describe RVCT compiler versions for the ARM platform and ABI versions of ARM:

ARM RVCT compiler versions

The ARMV5 build targets are built using ARM's own RealView Compiler Tools (RVCT) (http://www.arm.com/products/DevTools/RealViewDevSuite.html).

Note that RVCT 2.2 build 435 used with Symbian OS v9.2 is not supported from v9.3 onwards. Symbian OS v9.3 uses RVCT 2.2 build 559 and from OS v9.4 onwards RVCT 2.2 build 616 is used.

The following section discusses issues concerned with having RVCT 2.2 builds 435, 559 and 616 installed on a single PC, so as to enable development on both v9.2, v9.3 and v9.4.

Compiler set-up for v9.2, v9.3 and v9.4 builds

If you need to develop for Symbian OS v9.2, v9.3 and v9.4 on the same PC, you need to have the RVCT 2.2 builds 435, 559 and 616 installed. The build tools will use the version that appears first in the environment path variable. You will need to modify this setting yourself when moving between development kits.

Assuming the tools are installed to C:\apps\:

  • When working with v9.2, include build 435 version of the tools first in the path.

    For example:

    set PATH=C:\apps\ARM\RVCT\Programs\2.2\435\win_32-pentium;%path%

  • When working with v9.3, include build 559 version of the tools first in the path.

    For example:

    set PATH=C:\apps\ARM\RVCT\Programs\2.2\559\win_32-pentium;%path%

  • When working with v9.4, include build 616 version of the tools first in the path.

    For example:

    set PATH=C:\apps\ARM\RVCT\Programs\2.2\616\win_32-pentium;%path%

To know which version is currently installed on your PC, use the following command:

armcc --vsn

This reports the compiler version and build number.

ARMV5 (ABI v1 mode)

Use this target to create binaries conforming to the ABI v1.

To build for ARMV5 (ABI v1) with abld on Symbian OS v9.3 and earlier versions, use:

abld build ARMV5 [udeb | urel]

To build for ARMV5 (ABI v1) with abld on Symbian OS v9.4 and later versions, use:

abld build ARMV5_ABIv1 [udeb | urel]

Binaries are generated in the udeb and/or urel sub-directories of the epoc32\release\ARMV5\ directory. From Symbian OS v9.4 onwards, the binaries are generated in epoc32\release\ARMV5_ABIv1\.

Library export (.lib) files are generated in the epoc32\release\ARMV5\lib\ directory.

ARMV5 (ABI v2 mode)

Use this target to create binaries conforming to the ABI v2.

To build for ARMV5 (ABI v2) with abld on Symbian OS v9.3 and earlier versions, use:

abld build ARMV5_ABIv2 [udeb | urel]

To build for ARMV5 (ABI v2) with abld on Symbian OS v9.4 and later versions, use:

abld build ARMV5 [udeb | urel]

Binaries are generated in the udeb and/or urel sub-directories of the epoc32\release\ARMV5_ABIv2\ directory. From Symbian OS v9.4 onwards, the binaries are generated in epoc32\release\ARMV5\.

Library export (.dso) files are generated in the epoc32\release\ARMV5\lib\ directory. The ABI v2 toolchain need to support multiple ABI v2 compatible compilers to have a common directory for the import library files.

From Symbian OS v9.4 and later, ABI v2 is the default platform. So, a simple abld build command will create a binary conforming to ABI v2. To create a binary conforming to ABI v1, use abld build ARMV5_ABIv1.

You can switch back to the old approach, where the targets ARMV5 and ARMV5_ABIv2 will build binaries conforming to ABI v1 and ABI v2 respectively. For more details on this, refer to Switching between ABI modes.