2.3. Overview of the Target Bundle

This section provides an overview of the target package contents, the types of libraries included in the bundle, and the library names and descriptions.

When installed, the target bundle (rti_connext_dds_micro-<version>-target-<architecture>.rtipkg) adds the following to the Connext Micro directory:

--rti_connext_dds-<version>/
  |
  +--rti_connext_dds_micro-<version>/
      |
      +--lib/
          +--<arch>
          |  +---<arch libraries>
          +--<arch>CERT
          |   +---<arch libraries>
          +--<arch>-<PSL>
          |   +-- <arch PSL libraries>
          +--<arch>CERT-<PSL>
                +-- <arch PSL libraries>
  • The lib/ directory contains the libraries needed to build Connext Micro.

    • <arch> contains pre-built Static and Dynamic (where supported) Release and Debug libraries. These may be integrated libraries or Platform Independent Libraries; see Library types below.

    • <arch>CERT contains pre-built CERT profile Release and Debug libraries, if they exist for the specific architecture. These may be integrated libraries or Platform Independent Libraries; see Library types below.

    • <arch>-<PSL> contains pre-built Platform Support Libraries for the specific architecture.

    • <arch>CERT-<PSL> contains CERT profile Platform Support Libraries, if they exist for the specific architecture.

2.3.1. Library types

Connext Micro provides precompiled binaries for supported architectures. This section explains the different library types and gives a general description of the binaries shipped by RTI.

In this section, the following terms are used:

  • toolchain refers to the compiler, linker, and archiver for a specific CPU architecture, excluding dependencies in standard header files and libraries.

  • platform refers to the hardware, BSPs, OS kernel, and C/C++ libraries that are not included in the toolchain (such as libc, libc++, and the network stack).

RTI builds two types of binaries for Connext Micro: integrated libraries and split libraries. RTI may include either or both types of binaries for a given target architecture.

2.3.1.1. Integrated libraries

All Connext Micro target packages include a core library called rti_me. The rti_me library includes all the required basic functionality for Connext Micro.

The term “integrated library” refers to an rti_me library where all the OS integration and network stack integration is compiled directly into rti_me. This means that it is not possible to change how the OS and network integration has been written without recompiling the entire library. This is illustrated below:

../_images/IntegratedLibrary_Overview.png

Figure 2.1 An overview of rti_me as an integrated library

Note

All binaries provided for Connext Micro version 4.0.1 and below are integrated libraries.

2.3.1.2. Split libraries

In contrast to an integrated library, split libraries consist of a Platform Independent Library (PIL) and a Platform Support Library (PSL).

The PIL is an rti_me library that includes all functionality for Connext Micro except for platform integration code.

The PSL consists of two libraries that support OS integration and network stack integration:

  • The OS Platform Support Library (ospsl): Contains the required OS support, such as mutex and semaphore support. This library is very limited in functionality.

  • The Network Support Library (netiopsl): Includes support for transports, such as UDPv4.

The ospsl and netiopsl libraries are collectively referred to as the PSL (even though it is more than one library).

This is illustrated below:

../_images/PIL_Overview.png

Figure 2.2 An overview of split libraries

The main benefit of split libraries is that different PSLs can be written for the same PIL without having to recompile the platform-independent code.

Note

The PIL is compiled without standard C header files and is only dependent on the toolchain. This is different from the integrated libraries, which are compiled with standard C header files.

The PSL is always compiled against the standard C header files, as well as other platform-dependent header files.

2.3.2. Library descriptions

The following libraries are included in the target bundle. Note that the names listed below do not include platform-specific prefixes or suffixes.

Depending on the target architecture, the library name is prefixed with lib and the library suffix also varies between target architectures, such as .so and .dylib.

The following naming conventions are also used:

  • Static libraries have a z suffix.

  • Shared libraries do not have an additional suffix.

  • Debug libraries have a d suffix.

  • Release libraries do not have an additional suffix.

For example:

  • rti_mezd indicates a static debug library.

  • rti_me indicates a dynamically linked release library.

Table 2.1 Target Bundle Libraries

Library Name

Description

rti_me

The core library, including the DDS C API.

rti_me_discdpse

The Dynamic Participant Static Endpoint (DPSE) plugin.

rti_me_discdpde

The Dynamic Participant Dynamic Endpoint (DPDE) plugin.

rti_me_rhsm

The Reader History plugin.

rti_me_whsm

The Writer History plugin.

rti_me_netiosdm

The Zero Copy v1 over shared memory transport library plugin.

rti_me_netioshmem

The Shared Memory Transport plugin.

rti_me_appgen

The Application Generation plugin.

rti_me_cpp

The C++ API.

rti_me_ospsl

The OS PSL.

rti_me_netiopsl

The C NETIO PSL.

rti_me_netiopsl_cpp

The C++ NETIO PSL library.

rti_me_netiozcopy

The Zero Copy v2 transport library plugin (not supported on all platforms)