Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

The previous naming schema was ambiguous because gcc 5 and later can be used to build binaries with C++98 ABI.
Since the release 2.26.0 FIX Antenna binaries have following naming convention for Linux:

BinaryOld binary naming conventionC++ ABITarget OSTarget Compiler
libV12_rh6.so

libV12-centos-6.5-gcc44-MD-x64.so

libV12-centos-6.7-gcc52-MD-x64.so

libV12-centos-6.9-gcc63-MD-x64.so

C++ 98RHEL6/CentOS6
  1. GCC 4.4 - 4.9
  2. GCC 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=0, any C++ standard supported by the compiler can be used (C++ 98, 11, 14, 17).


Note: GCC should be installed from RHEL/CentOS repository or developer toolset.

libV12_rh6_cxx11.so

libV12-centos-6.5-gcc44-MD-x64.so

libV12-centos-6.7-gcc52-MD-x64.so

libV12-centos-6.10-gcc52-MD-x64.so

libV12-centos-6.9-gcc63-MD-x64.so

libV12-centos-6.10-gcc63-MD-x64.so

C++ 11RHEL6/CentOS6

GCC 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=1 (the default), any C++ standard supported by the compiler can be used (C++ 98, 11, 14, 17).

Note: GCC 5.2 and higher should be build and installed from sources, because GCC from devtoolset uses only C++98 ABI.

Use LD version 2.27 and higher with C++11 ABI to avoid linking problems.

libV12_rh7.so

libV12-centos-7.5.1804-gcc48-MD-x64.so

libV12-centos-7.5.1804-gcc49-MD-x64.so

libV12-centos-7.5.1804-gcc52-MD-x64.so

C++ 98RHEL7/CentOS7
  1. GCC 4.8 - 4.9
  2. GCC 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=0, any C++ standard supported by the compiler can be used (C++ 98, 11, 14, 17).

Note: GCC should be installed from RHEL/CentOS repository or developer toolset. Do not use GCC from devtoolset with new ABI, i.e. with parameter -D_GLIBCXX_USE_CXX11_ABI=1. This compiler build uses C++98 ABI.

libV12_rh7_cxx11.solibV12-centos-7.5.1804-gcc52-MD-x64.soC++ 11RHEL7/CentOS7

GCC 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=1 (the default), any C++ standard supported by the compiler can be used (C++ 98, 11, 14, 17).

Note: GCC 5.2 and higher should be build and installed from sources, because GCC from devtoolset uses only C++98 ABI.

Use LD version 2.27 and higher with C++11 ABI to avoid linking problems.

libV12_ubuntu1604_cxx11.solibV12-ubuntu-16.04.5-lts-gcc61-MD-x64.soC++ 11Ubuntu 16.04

GCC 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=1 (the default), any C++ standard supported by the compiler can be used (C++ 98, 11, 14, 17).

Note: GCC 5.2 and higher should be installed from Ubuntu repository.

Use LD version 2.27 and higher with C++11 ABI to avoid linking problems.

How to use FIX Antenna with GCC

...

Code Block
titleHow to set symlink to libV12.so
# FOR RHEL7/CentOS7
# C++98 ABI gcc 4.4-4.9 and gcc 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=0
$ ./v12-linker.sh --use-cxx11-abi=0 --searchpath=../lib
[INFO] libV12_rh7.so is used as libV12.so


# is equal to
ln -fs libV12_rh7.so libV12.so


# FOR RHEL7/CentOS7
# C++11 ABI, custom build gcc 5.2 and higher with -D_GLIBCXX_USE_CXX11_ABI=1(by default)
$ ./v12-linker.sh --use-cxx11-abi=1 --searchpath=../lib
[INFO] libV12_rh7_cxx11.so is used as libV12.so

# is equal to
ln -fs libV12_rh7_cxx11.so libV12.so

Take ${FIX_ANTENNA_LOCATION}/samples/FIX_Quickstart example for this tutorial.

First way: build the project using the parameters of the compiler and linker from scratch.

...

Code Block
titleCompile with optional flags
collapsetrue
# or with optional warnings

g++ -D_LINUX -Wall -Wextra -Winit-self -Wmissing-include-dirs -Wno-parentheses -Wpedantic \
 -Wno-long-long -Wno-unused-parameter -Wredundant-decls -Wnon-virtual-dtor -Wshadow -Woverloaded-virtual \
 -fPIC -MMD -MF ./debug_obj/FIXApp.d -I../../../headers -ggdb -D_DEBUG -c FIXApp.cpp -o debug_obj/FIXApp.o

g++ -D_LINUX -Wall -Wextra -Winit-self -Wmissing-include-dirs -Wno-parentheses -Wpedantic \ 
 -Wno-long-long -Wno-unused-parameter -Wredundant-decls -Wnon-virtual-dtor -Wshadow -Woverloaded-virtual \ 
 -fPIC -MMD -MF ./debug_obj/Sender.d -I../../../headers -ggdb -D_DEBUG -c Sender.cpp -o debug_obj/Sender.o

Sender and Listener are compiled for debug mode. If you want to do it for release, use -DNDEBUG instead of -D_DEBUG, remove -ggdb and add -O3 flag to optimize the code.

Please, pay attention at using -I flag to set location of FIX Antenna include directory (-I../../../headers).
Don't forget to set libV12.so location with -L flag (-L../../../lib) and to add FIX Antenna library as additional dependency with flag -l (-lV12) when you link executable:

...

Code Block
titleRun linker for release mode
g++ -L../../../lib release_obj/FIXApp.o release_obj/Listener.o release_obj/SessionConnector.o \
 	-o Listener \
	-lrt -lV12

How to build project with FIX Antenna using Make utility

First, create Makefile with following content:

...