0

I'm working with an Alderbaran Nao V5 robot. Furthermore, I am compiling my code on a virtual environment provided by Alderbaran within Virtual Box.

I have written code on my computer which relies on functionality from c++11 (multithreading and anonymous functions), however, the g++ compiler installed on the VM is:

  Using built-in specs.
COLLECT_GCC=/usr/i686-pc-linux-gnu/gcc-bin/4.5.3/g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-pc-linux-gnu/4.5.3/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: /opennao-atom/tmp/portage/sys-devel/gcc-4.5.3-r1/work/gcc-4.5.3/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.5.3 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.3 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.3/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.5.3/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.5.3/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --disable-fixed-point --without-ppl --without-cloog --disable-lto --enable-nls --without-included-gettext --with-system-zlib --disable-werror --enable-secureplt --disable-multilib --enable-libmudflap --disable-libssp --enable-libgomp --with-python-dir=/share/gcc-data/i686-pc-linux-gnu/4.5.3/python --enable-checking=release --disable-libgcj --with-arch=i686 --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all --with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.5.3-r1 p1.0, pie-0.4.5'
Thread model: posix
gcc version 4.5.3 (Gentoo 4.5.3-r1 p1.0, pie-0.4.5)

Because multithreading and anonymous functions are available with the prototype -std = c++0x flag, I tried compiling with c++0x enabled. However, I receive the following error message, which I am assuming occurs because the Alderbaran libraries which I leverage in my code comply with the rules specified for the earlier c++ version. Can anyone recommend a solution? Is there a way to use backwards compatibility for those Alderbaran libraries, but to use the new compiler with my code?

g++ -Wall -g -fPIC -std=c++0x -c -I/home/nao/naoqi-sdk-2.1.3.3-linux32/include StepHandler.cpp
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:17:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/boost/signal.hpp:17:4: warning: #warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING."
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:17:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/boost/noncopyable.hpp:27:37: error: 'boost::noncopyable_::noncopyable::noncopyable()' declared with non-public access cannot be defaulted in the class body
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/boost/noncopyable.hpp:28:22: error: 'boost::noncopyable_::noncopyable::~noncopyable()' declared with non-public access cannot be defaulted in the class body
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/typeinterface.hpp:371:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyfunction.hpp:53,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/manageable.hpp:13,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyobject.hpp:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alfunctor.h:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:21,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/typeimpl.hxx: In static member function 'static void* qi::TypeByPointer<T, Manager>::initializeStorage(void*)':
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/typeimpl.hxx:157:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/typeimpl.hxx:157:1: error: expected primary-expression before '(' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/typeimpl.hxx:157:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/typeimpl.hxx:157:1: error: expected primary-expression before ')' token
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/typeinterface.hpp:372:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyfunction.hpp:53,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/manageable.hpp:13,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyobject.hpp:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alfunctor.h:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:21,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/type.hxx: In function 'void qi::detail::initializeType(qi::TypeInterface*&)':
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/type.hxx:46:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/type.hxx:46:1: error: expected primary-expression before '(' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/type.hxx:46:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/type.hxx:46:1: error: expected primary-expression before ')' token
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/typeinterface.hpp:376:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyfunction.hpp:53,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/manageable.hpp:13,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyobject.hpp:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alfunctor.h:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:21,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx: In member function 'virtual void qi::TypeImpl<char [I]>::set(void**, const char*, size_t)':
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx:104:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx:104:1: error: expected primary-expression before '(' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx:104:1: error: expected primary-expression before ',' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx:104:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/stringtypeinterface.hxx:104:1: error: expected primary-expression before ')' token
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/typeinterface.hpp:380:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyfunction.hpp:53,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/manageable.hpp:13,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyobject.hpp:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alfunctor.h:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:21,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx: In member function 'virtual qi::AnyReference qi::TypeImpl<boost::any>::get(void*)':
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:20:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:20:1: error: expected primary-expression before '(' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:20:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:20:1: error: expected primary-expression before ')' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx: In member function 'virtual void qi::TypeImpl<boost::any>::set(void**, qi::AnyReference)':
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:26:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:26:1: error: expected primary-expression before '(' token
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:26:1: error: too few arguments to function 'boost::format qi::log::detail::getFormat(const std::string&)'
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qi/details/log.hxx:201:28: note: declared here
/home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/details/dynamictypeinterface.hxx:26:1: error: expected primary-expression before ')' token
In file included from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyfunction.hpp:228:0,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/manageable.hpp:13,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/qitype/anyobject.hpp:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alfunctor.h:17,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodulecore.h:21,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/almodule.h:16,
                 from /home/nao/naoqi-sdk-2.1.3.3-linux32/include/alcommon/alproxy.h:16,
                 from StepHandler.h:16,
                 from StepHandler.cpp:6:

etc.

Austin
  • 79
  • 1
  • 6
  • `/home/nao/naoqi-sdk-2.1.3.3-linux32/include/boost/noncopyable.hpp:27:37: error: 'boost::noncopyable_::noncopyable::noncopyable()' declared with non-public access cannot be defaulted in the class body` That sounds like C++11 code being compiled at too old a standard? – Chris Beck May 27 '16 at 19:18
  • It is unclear, what solution you expect. You have to make all your code to fit to compiler that you compile it with.C++ does not have standard ABI, so using multiple C++ compilers/versions in mix is usually quite tricky. – Öö Tiib May 27 '16 at 22:38

2 Answers2

1

A similar question can be found here: Can you mix c++ compiled with different versions of the same compiler

The safest solution is to use the same compiler version for both application code and libraries. That means to recompile all the libraries you are using with the new compiler version.

Community
  • 1
  • 1
Garland
  • 911
  • 7
  • 22
0

Note that for NAO you can also cross-compile your C++, so without using the virtual machine, so you can use whatever compiler version you want!

JLS
  • 968
  • 5
  • 12