Elektron SDK - C/C++

API Family: Elektron

ETA C Compiler Settings

The following guides provide the necessary compiler and environment settings required to build and run an ETA C application. For each environment, a project template file is available for download allowing the developer a convenient starting point to build their own applications.

*Important Note*

In versions prior to 1.2, the ESDK APIs were built without a CMake harness (i.e., developers used the static build files with other utilities such as Visual Studio or Linux make to build the APIs). As of open-source version 1.2 ESDK release, developers use CMake to dynamically generate the build files.  Refer to the generated build files for up-to-date project settings for your compiler and environment.  Prior to ESDK 1.2, refer to the project setting details below.

 

 

Note: ETA is packaged as part of the Elektron SDK bundle.  Refer to the README file within the Eta subfolder of the Elektron SDK bundle for the complete list of OS and compiler support.

The ETA packages provide the ability to:

  • Build statically linked and dynamically linked binaries
  • Support for debug and release build types
  • Support for 64-bit architectures

Choose your development environment:

  ETA static libraries ETA shared libraries
Visual Studio Statically Linked Binary Dynamically Linked Binary
Linux Statically Linked Binary Dynamically Linked Binary

Project Templates:

Download a project template to be used as a base starting point to build your ETA C projects. The templates contain all the properties as outlined within the development settings defined above. Note: Refer to the Environment section within the development setting tables to ensure your specific environment is defined properly.


Windows - Visual Studio - Statically Linked Binary

Note: <ETA root> is a directory which is located within your Elektron SDK installation package


Include Path Within Properties: VC++ Directories -> Include Directories define the following:
  • <ETA root>\Include\Transport;<ETA root>\Include\Reactor;<ETA root>\Include\RDM;

    <ETA root>\Include\Util;<ETA root>\Include\Codec;<ETA root>\Include\Cache

Lib Path

VS2015

(ETA 1.0.2 or greater)

Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS140\Debug_MDd
  • <ETA root>\Libs\WIN_64_VS140\Release_MD
  • <ETA root>\Libs\WIN_64_VS140\Release_MD_Assert
Lib Path

VS2013
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS120\Debug_MDd
  • <ETA root>\Libs\WIN_64_VS120\Release_MD
  • <ETA root>\Libs\WIN_64_VS120\Release_MD_Assert
Lib Path

VS2012
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS110\Debug_MDd
  • <ETA root>\Libs\WIN_64_VS110\Release_MD
  • <ETA root>\Libs\WIN_64_VS110\Release_MD_Assert
Lib Path

VS2010
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS100\Debug_MDd
  • <ETA root>\Libs\WIN_64_VS100\Release_MD
  • <ETA root>\Libs\WIN_64_VS100\Release_MD_Assert
Libs Within Properties: Linker -> Input -> Additional Dependencies include the entry below:
  • librssl.lib;librsslVA.lib;librsslVACache.lib
Compiler Settings Within Properties define all settings below:
  • C/C++ -> Precompiled Headers define: Precompiled Header: Not using Precompiled Headers
  • Linker -> Advanced: Ensure Image Has Safe Exception Handlers is blank
Runtime Environment No runtime environment settings required.

Windows - Visual Studio - Dynamically Linked Binary

Note: <ETA root> is a directory which is located within your Elektron SDK installation package


Include Path Within Properties: VC++ Directories -> Include Directories define the following:
  • <ETA root>\Include\Transport;<ETA root>\Include\Reactor;<ETA root>\Include\RDM;

    <ETA root>\Include\Util;<ETA root>\Include\Codec;<ETA root>\Include\Cache

Lib Path

VS2015

(ETA 1.0.2 or greater)

Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS140\Debug_MDd\Shared
  • <ETA root>\Libs\WIN_64_VS140\Release_MD\Shared
  • <ETA root>\Libs\WIN_64_VS140\Release_MD_Assert\Shared
Lib Path

VS2013
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS120\Debug_MDd\Shared
  • <ETA root>\Libs\WIN_64_VS120\Release_MD\Shared
  • <ETA root>\Libs\WIN_64_VS120\Release_MD_Assert\Shared
Lib Path

VS2012
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS110\Debug_MDd\Shared
  • <ETA root>\Libs\WIN_64_VS110\Release_MD\Shared
  • <ETA root>\Libs\WIN_64_VS110\Release_MD_Assert\Shared
Lib Path

VS2010
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS100\Debug_MDd\Shared
  • <ETA root>\Libs\WIN_64_VS100\Release_MD\Shared
  • <ETA root>\Libs\WIN_64_VS100\Release_MD_Assert\Shared
Libs Within Properties: Linker -> Input -> Additional Dependencies include the entry below:
  • librssl.lib;librsslVA.lib;librsslVACache.lib
Compiler Settings Within Properties define all settings below:
  • C/C++ -> Preprocessor -> Preprocessor Definitions: Add the directives: RSSL_IMPORTS, RSSL_VA_IMPORTS
  • C/C++ -> Precompiled Headers define: Precompiled Header: Not using Precompiled Headers
  • Linker -> Advanced: Ensure Image Has Safe Exception Handlers is blank
Runtime Environment

Ensure the selected Lib Path detailed above is defined within your system path


Linux - Statically Linked Binary

Note: <ETA root> is a directory which is located within your Elektron SDK installation package


Include Path Using the header include flag (-I):
  • -I<ETA root>/Include/Transport -I<ETA root>/Include/Reactor -I<ETA root>/Include/RDM

    -I<ETA root>/Include/Util -I<ETA root>/Include/Codec -I<ETA root>/Include/Cache
Lib Path Using the library include flag (-L), choose one based on your compiler:

Compiler ETA Lib Path
GCC suite 4.4.4 or higher for RHAS 6.0 (64-bit)
  • -L<ETA root>/Libs/RHEL6_64_GCC444/Optimized
  • -L<ETA root>/Libs/RHEL6_64_GCC444/Optimized_Assert
GCC suite 4.8.2 or higher for Oracle Linux 7.0 (64-bit)
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized_Assert

Note: Oracle Linux 7.0 libraries are fully compatible with RHEL7.

Libs Libraries to be linked using (-l):
  • -lrssl -lrsslTransport -lrsslReactor -lrsslRDM -lrsslVAUtil -lrsslVACache
Compiler Settings Compiler flags (-D): -DLinux
Runtime Environment No runtime environment settings required.

Linux - Dynamically Linked Binary


Include Path Using the header include flag (-I):
  • -I<ETA root>/Include/Transport -I<ETA root>/Include/Reactor -I<ETA root>/Include/RDM

    -I<ETA root>/Include/Util -I<ETA root>/Include/Codec -I<ETA root>/Include/Cache
Lib Path Using the library include flag (-L), choose one based on your compiler:

Compiler ETA Lib Path
GCC suite 4.4.4 or higher for RHAS 6.0 (64-bit)
  • -L<ETA root>/Libs/RHEL6_64_GCC444/Optimized/Shared
  • -L<ETA root>/Libs/RHEL6_64_GCC444/Optimized_Assert/Shared
GCC suite 4.8.2 or higher for Oracle Linux 7.0 (64-bit)
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized/Shared
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized_Assert/Shared

Note: Oracle Linux 7.0 libraries are fully compatible with RHEL7.

Libs Libraries to be linked using (-l):
  • -lrssl -lrsslVA -lrsslVACache
Compiler Settings Compiler flags (-D): -DLinux
Runtime Environment

Ensure the selected Lib Path detailed above is defined within your library path environment variable: LD_LIBRARY_PATH