Build Error with fix8-1.4.1 on Ubuntu

158 views
Skip to first unread message

Patrick Luck

unread,
Jul 6, 2020, 5:17:25 PM7/6/20
to fix8 support
Hi all,

I am currently attempting to build fix8-1.4.1 on Ubuntu 18.04.2 LTS. When I run the `make` command, I receive the following error messages:

Makefile:665: recipe for target 'libhftest_la-Perf_types.lo' failed
make[3]: *** [libhftest_la-Perf_types.lo] Error 1
make[3]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1/test'
Makefile:481: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1/test'
Makefile:567: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1'
Makefile:472: recipe for target 'all' failed
make: *** [all] Error 2


I have been following the build instructions from the following URL:

Things work from the following instructions until I try to run `make`:
% tar xvzf 1.4.0.tar.gz
% cd fix8-1.4.0
% ./bootstrap
% ./configure --prefix=/usr/local
% make
% make install

I have consulted the following questions within this group before deciding to create a new post, as I could not find a suitable solution frfix8-1.4.1om them:


Kind regards,

Patrick

Patrick Luck

unread,
Jul 8, 2020, 6:02:15 AM7/8/20
to fix8 support
Update:
The issue is still unsolved. It seems that (at least) part of the problem possibly stems from building some of the tests, so from the FAQs [5.(a) and 5.(m)] I tried to disable the building of f8test and cleaned using:

make clean
./configure --enable-f8test=no --prefix=/usr/local
make

The same error still persists when make is ran, as seen below. If anyone has any suggestions on how I may resolve this, I would really appreciate any help.

I have pasted the terminal output from where the first error occurs (I can provide the full output if necessary):

../include/fix8/ff/mpmc/MPMCqueues.hpp:784:46: note: uses ‘void* operator new(std::size_t)’, which does not have an alignment parameter
../include/fix8/ff/mpmc/MPMCqueues.hpp:784:46: note: use ‘-faligned-new’ to enable C++17 over-aligned new support
In file included from Perf_types.cpp:77:0:
../include/fix8/logger.hpp: At global scope:
../include/fix8/logger.hpp:576:30: error: ‘function’ in namespace ‘std’ does not name a template type
 using logger_function = std::function<bool(const std::string&, Logger::Level, const char *, const unsigned)>;
                              ^~~~~~~~
../include/fix8/logger.hpp:580:2: error: ‘logger_function’ does not name a type; did you mean ‘__fortify_function’?
  logger_function _logger;
  ^~~~~~~~~~~~~~~
  __fortify_function
../include/fix8/logger.hpp:586:22: error: ‘_logger’ was not declared in this scope
  log_stream(decltype(_logger) func, Logger::Level lev=Logger::Info, const char *loc=nullptr, unsigned value=0)
                      ^~~~~~~
../include/fix8/logger.hpp:586:22: note: suggested alternative: ‘Logger’
  log_stream(decltype(_logger) func, Logger::Level lev=Logger::Info, const char *loc=nullptr, unsigned value=0)
                      ^~~~~~~
                      Logger
../include/fix8/logger.hpp:586:22: error: ‘_logger’ was not declared in this scope
../include/fix8/logger.hpp:586:22: note: suggested alternative: ‘Logger’
  log_stream(decltype(_logger) func, Logger::Level lev=Logger::Info, const char *loc=nullptr, unsigned value=0)
                      ^~~~~~~
                      Logger
../include/fix8/logger.hpp: In constructor ‘FIX8::log_stream::log_stream(int, FIX8::Logger::Level, const char*, unsigned int)’:
../include/fix8/logger.hpp:587:5: error: class ‘FIX8::log_stream’ does not have any field named ‘_logger’
   : _logger(func), _lev(lev), _loc(loc), _value(value) {}
     ^~~~~~~
../include/fix8/logger.hpp: In destructor ‘virtual FIX8::log_stream::~log_stream()’:
../include/fix8/logger.hpp:588:18: error: ‘_logger’ was not declared in this scope
  ~log_stream() { _logger(_buf.get(), _lev, _loc, _value); }
                  ^~~~~~~
../include/fix8/logger.hpp:588:18: note: suggested alternative: ‘Logger’
  ~log_stream() { _logger(_buf.get(), _lev, _loc, _value); }
                  ^~~~~~~
                  Logger
In file included from Perf_types.cpp:80:0:
../include/fix8/message.hpp: At global scope:
../include/fix8/message.hpp:176:7: error: ‘function’ in namespace ‘std’ does not name a template type
  std::function<Message *(bool)> _do;
       ^~~~~~~~
../include/fix8/message.hpp: In constructor ‘FIX8::Minst::Minst(FIX8::Type2Type<T, args ...>)’:
../include/fix8/message.hpp:184:35: error: class ‘FIX8::Minst’ does not have any field named ‘_do’
    Minst(Type2Type<T, args...>) : _do(_gen::_make<T, args...>)
                                   ^~~
../include/fix8/message.hpp: At global scope:
../include/fix8/message.hpp:201:28: error: ‘function’ in namespace ‘std’ does not name a template type
 using c_str_compare = std::function<bool(const char *, const char *)>;
                            ^~~~~~~~
../include/fix8/message.hpp:202:25: error: ‘function’ in namespace ‘std’ does not name a template type
 using msg_create = std::function<Message *(bool)>;
                         ^~~~~~~~
../include/fix8/message.hpp:204:76: error: ‘c_str_compare’ was not declared in this scope
 using ReverseMsgTable = std::map<const char * const, const BaseMsgEntry *, c_str_compare>;
                                                                            ^~~~~~~~~~~~~
../include/fix8/message.hpp:204:89: error: template argument 3 is invalid
 using ReverseMsgTable = std::map<const char * const, const BaseMsgEntry *, c_str_compare>;
                                                                                         ^
../include/fix8/message.hpp:206:75: error: ‘c_str_compare’ was not declared in this scope
 using ReverseFieldTable = std::map<const char * const, const BaseEntry *, c_str_compare>;
                                                                           ^~~~~~~~~~~~~
../include/fix8/message.hpp:206:88: error: template argument 3 is invalid
 using ReverseFieldTable = std::map<const char * const, const BaseEntry *, c_str_compare>;
                                                                                        ^
../include/fix8/message.hpp:226:2: error: ‘msg_create’ does not name a type; did you mean ‘timer_create’?
  msg_create _mk_hdr, _mk_trl;
  ^~~~~~~~~~
  timer_create
../include/fix8/message.hpp:232:2: error: ‘ReverseMsgTable’ does not name a type; did you mean ‘MsgTable’?
  ReverseMsgTable _reverse_msgtable;
  ^~~~~~~~~~~~~~~
  MsgTable
../include/fix8/message.hpp:233:2: error: ‘ReverseFieldTable’ does not name a type; did you mean ‘FieldTable’?
  ReverseFieldTable _reverse_fieldtable;
  ^~~~~~~~~~~~~~~~~
  FieldTable
../include/fix8/message.hpp: In constructor ‘FIX8::F8MetaCntx::F8MetaCntx(unsigned int, const MsgTable&, const FieldTable&, const char**, const f8String&)’:
../include/fix8/message.hpp:245:3: error: class ‘FIX8::F8MetaCntx’ does not have any field named ‘_mk_hdr’
   _mk_hdr(_bme.find_ref("header")._create._do), _mk_trl(_bme.find_ref("trailer")._create._do),
   ^~~~~~~
../include/fix8/message.hpp:245:43: error: ‘const class FIX8::Minst’ has no member named ‘_do’
   _mk_hdr(_bme.find_ref("header")._create._do), _mk_trl(_bme.find_ref("trailer")._create._do),
                                           ^~~
../include/fix8/message.hpp:245:49: error: class ‘FIX8::F8MetaCntx’ does not have any field named ‘_mk_trl’
   _mk_hdr(_bme.find_ref("header")._create._do), _mk_trl(_bme.find_ref("trailer")._create._do),
                                                 ^~~~~~~
../include/fix8/message.hpp:245:90: error: ‘const class FIX8::Minst’ has no member named ‘_do’
   _mk_hdr(_bme.find_ref("header")._create._do), _mk_trl(_bme.find_ref("trailer")._create._do),
                                                                                          ^~~
../include/fix8/message.hpp:247:3: error: class ‘FIX8::F8MetaCntx’ does not have any field named ‘_reverse_msgtable’
   _reverse_msgtable(_comp), _reverse_fieldtable(_comp)
   ^~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:247:29: error: class ‘FIX8::F8MetaCntx’ does not have any field named ‘_reverse_fieldtable’
   _reverse_msgtable(_comp), _reverse_fieldtable(_comp)
                             ^~~~~~~~~~~~~~~~~~~
../include/fix8/message.hpp: In lambda function:
../include/fix8/message.hpp:256:6: error: ‘_reverse_fieldtable’ was not declared in this scope
    { _reverse_fieldtable.emplace(std::make_pair(pp.second()._name, &pp.second())); });
      ^~~~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:256:6: note: suggested alternative: ‘reverse_find_be’
    { _reverse_fieldtable.emplace(std::make_pair(pp.second()._name, &pp.second())); });
      ^~~~~~~~~~~~~~~~~~~
      reverse_find_be
../include/fix8/message.hpp: In lambda function:
../include/fix8/message.hpp:258:6: error: ‘_reverse_msgtable’ was not declared in this scope
    { _reverse_msgtable.emplace(std::make_pair(pp.second()._name, &pp.second())); });
      ^~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:258:6: note: suggested alternative: ‘reverse_find_be’
    { _reverse_msgtable.emplace(std::make_pair(pp.second()._name, &pp.second())); });
      ^~~~~~~~~~~~~~~~~
      reverse_find_be
../include/fix8/message.hpp: In member function ‘const FIX8::BaseEntry* FIX8::F8MetaCntx::reverse_find_be(const char*) const’:
../include/fix8/message.hpp:277:13: error: ‘_reverse_fieldtable’ was not declared in this scope
    auto itr(_reverse_fieldtable.find(fieldstr));
             ^~~~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:277:13: note: suggested alternative: ‘reverse_find_be’
    auto itr(_reverse_fieldtable.find(fieldstr));
             ^~~~~~~~~~~~~~~~~~~
             reverse_find_be
../include/fix8/message.hpp: In member function ‘short unsigned int FIX8::F8MetaCntx::reverse_find_fnum(const char*) const’:
../include/fix8/message.hpp:290:13: error: ‘_reverse_fieldtable’ was not declared in this scope
    auto itr(_reverse_fieldtable.find(fieldstr));
             ^~~~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:290:13: note: suggested alternative: ‘reverse_find_be’
    auto itr(_reverse_fieldtable.find(fieldstr));
             ^~~~~~~~~~~~~~~~~~~
             reverse_find_be
../include/fix8/message.hpp: In member function ‘const FIX8::BaseMsgEntry* FIX8::F8MetaCntx::reverse_find_bme(const char*) const’:
../include/fix8/message.hpp:326:12: error: ‘_reverse_msgtable’ was not declared in this scope
   auto itr(_reverse_msgtable.find(msgstr));
            ^~~~~~~~~~~~~~~~~
../include/fix8/message.hpp:326:12: note: suggested alternative: ‘reverse_find_be’
   auto itr(_reverse_msgtable.find(msgstr));
            ^~~~~~~~~~~~~~~~~
            reverse_find_be
../include/fix8/message.hpp: In member function ‘FIX8::Message* FIX8::F8MetaCntx::create_msg_from_longname(const char*, bool) const’:
../include/fix8/message.hpp:337:29: error: ‘const class FIX8::Minst’ has no member named ‘_do’
   return bme ? bme->_create._do(deepctor) : nullptr;
                             ^~~
../include/fix8/message.hpp: In member function ‘FIX8::Message* FIX8::F8MetaCntx::create_msg(const char*, bool) const’:
../include/fix8/message.hpp:347:29: error: ‘const class FIX8::Minst’ has no member named ‘_do’
   return bme ? bme->_create._do(deepctor) : nullptr;
                             ^~~
../include/fix8/message.hpp: In constructor ‘FIX8::Message::Message(const FIX8::F8MetaCntx&, const f8String&, InputIterator, size_t, const FIX8::FieldTrait_Hash_Array*)’:
../include/fix8/message.hpp:1089:61: error: ‘const struct FIX8::F8MetaCntx’ has no member named ‘_mk_hdr’
   : MessageBase(ctx, msgType, begin, cnt, ftha),_header(ctx._mk_hdr(true)),
                                                             ^~~~~~~
../include/fix8/message.hpp:1090:18: error: ‘const struct FIX8::F8MetaCntx’ has no member named ‘_mk_trl’
     _trailer(ctx._mk_trl(true)), _custom_seqnum(), _no_increment(), _end_of_batch(true)
                  ^~~~~~~

Makefile:665: recipe for target 'libhftest_la-Perf_types.lo' failed
make[3]: *** [libhftest_la-Perf_types.lo] Error 1
make[3]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1/test'
Makefile:481: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1/test'
Makefile:567: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/paddy/Documents/Business/Dev/FIX/fix8-1.4.1'
Makefile:472: recipe for target 'all' failed
make: *** [all] Error 2

Patrick Luck

unread,
Jul 10, 2020, 4:38:27 AM7/10/20
to fix8 support
Update: Solved. I had to include the following within logger.hpp:

#include <functional>

More information can be found at the following URL:

Ian McKane

unread,
Aug 4, 2020, 7:34:24 PM8/4/20
to fix8 support
So you made a fix - how about a pull request so others can benefit?
/Ian

Reply all
Reply to author
Forward
0 new messages