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

From SEGGER Wiki
Jump to: navigation, search
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
  +
__TOC__
  +
 
Embedded Studio supports application development in C and C++.
 
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.
 
Its C runtime library, based on emRun, provides all fundamentals, tweaked for fastest speed or smallest size.
Line 17: Line 19:
 
''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.
Line 25: Line 27:
 
* Open the package manager under Tools -> Package Manager...
 
* Open the package manager under Tools -> Package Manager...
 
* Select the "ARM libcxx Library Package [Common]" or "RISCV libcxx Library Package [Common]" for installation.
 
* Select the "ARM libcxx Library Package [Common]" or "RISCV libcxx Library Package [Common]" for installation.
  +
[[File:Cpp_Package_Manager.PNG|thumb|Package Manager|none]]
 
* Optional: Select the specific libcxx Library Packages for your target architecture(s) for installation.
 
* 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.'
 
** 'If not done, Embedded Studio will download the specific package for your project. See next steps.'
Line 34: Line 37:
 
* Option the project options and go to Code -> Libraries.
 
* Option the project options and go to Code -> Libraries.
 
* In "libcxx Library" select "Yes" or "Yes (No Exceptions)".
 
* In "libcxx Library" select "Yes" or "Yes (No Exceptions)".
  +
[[File:Cpp_Project_Option.png|thumb|Project Options|none]]
 
* Press OK to save the 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.
 
* 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 Yes.
 
** Press Next to continue the download and installation.
 
** Press Next to continue the download and installation.
  +
[[File:Cpp_Additional_Pack.png|thumb|Package Prompt|none]]
   
 
The project is now configured to use the C++ standard library.
 
The project is now configured to use the C++ standard library.
 
Include the necessary headers and start using the library functions.
 
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 ==
 
== Enabling Exception Support ==
Line 62: Line 53:
 
* Set project option "Enable Exception Support" to Yes.
 
* Set project option "Enable Exception Support" to Yes.
 
* Make sure that sections readonly and readexec are placed in your linker script.
 
* 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

Revision as of 11:02, 9 January 2023

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.

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