Difference between revisions of "C++ Support in Embedded Studio"

From SEGGER Wiki
Jump to: navigation, search
(How to use the C++ Library)
(How to use the C++ Library)
Line 17: Line 17:
 
''Note: For libcxx, Embedded Studio V5.60 or later is required.''
 
''Note: For libcxx, Embedded Studio V5.60 or later is required.''
   
The C++ standard library is based on the embedded C++ subset of the [https://libcxx.llvm.org|libc++ C++ Standard Library.]
+
The C++ standard library is based on the embedded C++ subset of the [[https://libcxx.llvm.org|"libc++" C++ Standard Library.]]
   
 
To limit download and installation size of Embedded Studio, the library is supplied as additional packages for the supported target architectures.
 
To limit download and installation size of Embedded Studio, the library is supplied as additional packages for the supported target architectures.

Revision as of 16:24, 16 February 2022

Embedded Studio supports application development in C and C++. Its C runtime library, based on emRun, provides all fundamentals, tweaked for fastest speed or smallest size. In addition, the C++ library provides all required features for efficient C++ applications.

The C++ library adds:

  • C++ header files to wrap up their C equivalents. e.g. cmath to math.h.
  • C++-specific names and functions and mangled names for math.h. e.g. classification (isinf) and comparison (isless) functions, and cosf to cos(float) / cos to cos(double).
  • C++ header files for exception, new, typeinfo.
  • C++ unwinding library. Functions used for target unwinding, such as to implement exceptions.
  • The C++ ABI library. Low-level support for standard C++ libraries.
  • The C++ standard library.

This article describes how to enable the C++ libraries in Embedded Studio to use C++ library functions in target applications.

How to use the C++ Library

Note: For libcxx, Embedded Studio V5.60 or later is required.

The C++ standard library is based on the embedded C++ subset of the ["libc++" C++ Standard Library.]

To limit download and installation size of Embedded Studio, the library is supplied as additional packages for the supported target architectures. To enable the library in a project, only the common package needs to be installed. Embedded Studio takes care of downloading the specific packages if required.

  • Open the package manager under Tools -> Package Manager...
  • Select the "ARM libcxx Library Package [Common]" or "RISCV libcxx Library Package [Common]" for installation.
Package Manager
  • Optional: Select the specific libcxx Library Packages for your target architecture(s) for installation.
    • 'If not done, Embedded Studio will download the specific package for your project. See next steps.'
  • Press Next to continue the download and installation.

The library is now ready to use and can be enabled in new and existing projects.

  • Open or create a project.
  • Option the project options and go to Code -> Libraries.
  • In "libcxx Library" select "Yes" or "Yes (No Exceptions)".
Project Options
  • Press OK to save the project options.
  • If the specific package for your project has not been installed, yet, Embedded Studio prompts to download and install the package now.
    • Press Yes.
    • Press Next to continue the download and installation.
Package Prompt

The project is now configured to use the C++ standard library. Include the necessary headers and start using the library functions.

How to use the STLport Library (Legacy)

Embedded Studio V5.50 and prior do not support the libcxx library. Instead STLPort is available.

  • Open the package manager under Tools -> Package Manager...
  • Select the "STLPort Library Package" for installation.
  • Press Next to continue the download and installation.
  • Open or create a project.
  • Open the project options and go to Code -> Libraries.
  • In "STLPort Library" select "Yes".
  • Press OK ti save the project options.

The project is now configured to use STLPort as its C++ standard library.

Enabling Exception Support

To enable exception support in your C++ project the following must be considered:

  • Make sure your library is installed as explained above. (Project option libcxx Library = Yes)
  • Set project option "Enable Exception Support" to Yes.
  • Make sure that sections readonly and readexec are placed in your linker script.

Changing the C++ standard

Per default C++ support is set to gnu++98. If you are using more modern features of C++ make sure to change the standard to the respective version in project options under Code->Compiler->C++ Language Standard