ETA C Compiler Settings

ETA C Project Settings and Templates

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.

Note: ETA is packaged as part of the Real-Time SDK (RTSDK) bundle.  Refer to the README file within the Eta subfolder of the RTSDK 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

 

Windows - Visual Studio - Statically Linked Binary

Note: <ETA root> is a directory which is located within your RTSDK 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
Lib Path
VS2022
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS143\Debug_MDd
Or
  • <ETA root>\Libs\WIN_64_VS143\Release_MD
Lib Path
VS2019
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS142\Debug_MDd
Or
  • <ETA root>\Libs\WIN_64_VS142\Release_MD
Lib Path
VS2017
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS141\Debug_MDd
Or
  • <ETA root>\Libs\WIN_64_VS141\Release_MD
Lib Path
VS2015
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS140\Debug_MDd
Or
  • <ETA root>\Libs\WIN_64_VS140\Release_MD
Libs Within Properties: Linker -> Input -> Additional Dependencies include the entry below:
  • librsslVA.lib
  • librssl.lib
System Libraries:
  • ws2_32.lib
  • wininet.lib
  • crypt32.lib
  • cryptui.lib
  • Iphlpapi.lib
  • bcrypt.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
  • Preprocessor Definitions:
    • _CRT_SECURE_NO_WARNINGS
Runtime Environment No runtime environment settings required.

Windows - Visual Studio - Dynamically Linked Binary

Note: <ETA root> is a directory which is located within your RTSDK 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
Lib Path
VS2022
Within Properties: VC++ Directories -> Library Directories define only one based on your build preference:
  • <ETA root>\Libs\WIN_64_VS143\Debug_MDd\Shared
Or
  • <ETA root>\Libs\WIN_64_VS143\Release_MD\Shared

Lib Path
VS2019

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

Within Properties: Linker -> Input -> Additional Dependencies include the entry below:

  • librsslVA.lib
  • librssl.lib
System Libraries:
  • ws2_32.lib
  • wininet.lib
  • crypt32.lib
  • cryptui.lib
  • Iphlpapi.lib
  • bcrypt.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
  • Preprocessor Definitions:
    • _CRT_SECURE_NO_WARNINGS
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 RTSDK 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 
Lib Path Using the library include flag (-L), choose one based on your compiler:
Compiler ETA Lib Path
GCC suite 4.8.2 or higher for Oracle Linux 7.0 (64-bit)
  • -L<ETA root>/Libs/OL7_64_GCC482/Debug
Or
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized
GCC suite 8.3.1 or higher for RHEL 8 (64-bit)
  • -L<ETA root>/Libs/RHEL8_64_GCC831/Debug
Or
  • -L<ETA root>/Libs/RHEL8_64_GCC831/Optimized
GCC suite 11.4.1 or higher for RHEL 9 (64-bit)
  • -L<ETA root>/Libs/RHEL9_64_GCC1141/Debug
Or
  • -L<ETA root>/Libs/RHEL9_64_GCC1141/Optimized

Libs Libraries to be linked using (-l):
  • -lrsslVA
  • -lrssl

System Libraries:

  • -lnsl 
  • -lpthread 
  • -lrt 
  • -ldl 
  • -lm 
  • -lstdc++
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
Lib Path Using the library include flag (-L), choose one based on your compiler:
Compiler ETA Lib Path
GCC suite 4.8.2 or higher for Oracle Linux 7.0 (64-bit)
  • -L<ETA root>/Libs/OL7_64_GCC482/Debug/Shared
Or
  • -L<ETA root>/Libs/OL7_64_GCC482/Optimized/Shared
GCC suite 8.3.1 or higher for RHEL 8 (64-bit)
  • -L<ETA root>/Libs/RHEL8_64_GCC831/Debug/Shared
Or
  • -L<ETA root>/Libs/RHEL8_64_GCC831/Optimized/Shared
GCC suite 11.4.1 or higher for RHEL 9 (64-bit)
  • -L<ETA root>/Libs/RHEL9_64_GCC1141/Debug/Shared
Or
  • -L<ETA root>/Libs/RHEL9_64_GCC1141/Optimized/Shared
Note: Oracle Linux 7.0 libraries are fully compatible with RHEL7.
Libs Libraries to be linked using (-l):
  • -lrsslVA
  • -lrssl

System Libraries:

  • -lnsl 
  • -lpthread 
  • -lrt 
  • -ldl 
  • -lm 
  • -lstdc++
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