I was wondering if there're plans to release an upgrade to RTI Connext DDS 5.2.0 to support the latest Ubuntu LTS 16.04 release and the corresponding gcc compiler (GCC 5.3.0 or greater)
The next General Access Release of RTI Connext DDS will add support for Ubuntu 16.04 LTS. In the meantime—since there are no plans for a build of 5.2.0 for Ubuntu 16.04 LTS—you can use the 5.2.0 libraries for Ubuntu 14.04 LTS (i.e., i86Linux3gcc4.8.3 or x64Linux3gcc4.8.3). I think those libraries will work just fine, but if you run into any issues with them, please let me know and I will take a look the problem.
Can you share the error you run into when linking RTI Connext DDS 5.2.0 with GCC 5.0 or higher? I have been successful building and running a simple example on Ubuntu 16.04 64-bit. In particular, have installed the 5.2.0 x64Linux host with the x64Linux3gcc4.8.2 target and run the following commands:
fgarcia@ubuntu:~/test/hello$ ~/rti_connext_dds-5.2.0/bin/rtiddsgen -language C++ -example x64Linux3gcc4.8.2 HelloMessage.idl
INFO com.rti.ndds.nddsgen.Main Running rtiddsgen version 2.3.0, please wait ...
INFO com.rti.ndds.nddsgen.Main Done
$ gcc --version
gcc (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
fgarcia@ubuntu:~/test/hello$ make -f makefile_HelloMessage_x64Linux3gcc4.8.2
Checking directory objs
Making directory objs
Checking directory objs/x64Linux3gcc4.8.2
Making directory objs/x64Linux3gcc4.8.2
g++ -m64 -Wall -o objs/x64Linux3gcc4.8.2/HelloMessageSupport.o -DRTI_UNIX -DRTI_LINUX -DRTI_64BIT -I. -I"/home/fgarcia/rti_connext_dds-5.2.0"/include -I"/home/fgarcia/rti_connext_dds-5.2.0"/include/ndds -c HelloMessageSupport.cxx
g++ -m64 -Wall -o objs/x64Linux3gcc4.8.2/HelloMessagePlugin.o -DRTI_UNIX -DRTI_LINUX -DRTI_64BIT -I. -I"/home/fgarcia/rti_connext_dds-5.2.0"/include -I"/home/fgarcia/rti_connext_dds-5.2.0"/include/ndds -c HelloMessagePlugin.cxx
g++ -m64 -Wall -o objs/x64Linux3gcc4.8.2/HelloMessage.o -DRTI_UNIX -DRTI_LINUX -DRTI_64BIT -I. -I"/home/fgarcia/rti_connext_dds-5.2.0"/include -I"/home/fgarcia/rti_connext_dds-5.2.0"/include/ndds -c HelloMessage.cxx
g++ -m64 -Wall -o objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o -DRTI_UNIX -DRTI_LINUX -DRTI_64BIT -I. -I"/home/fgarcia/rti_connext_dds-5.2.0"/include -I"/home/fgarcia/rti_connext_dds-5.2.0"/include/ndds -c HelloMessage_subscriber.cxx
g++ -m64 -Wall -o objs/x64Linux3gcc4.8.2/HelloMessage_publisher.o -DRTI_UNIX -DRTI_LINUX -DRTI_64BIT -I. -I"/home/fgarcia/rti_connext_dds-5.2.0"/include -I"/home/fgarcia/rti_connext_dds-5.2.0"/include/ndds -c HelloMessage_publisher.cxx
g++ -m64 -static-libgcc -Wl,--no-as-needed -o objs/x64Linux3gcc4.8.2/HelloMessage_subscriber objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o objs/x64Linux3gcc4.8.2/HelloMessageSupport.o objs/x64Linux3gcc4.8.2/HelloMessagePlugin.o objs/x64Linux3gcc4.8.2/HelloMessage.o -L"/home/fgarcia/rti_connext_dds-5.2.0"/lib/x64Linux3gcc4.8.2 -lnddscppz -lnddscz -lnddscorez -ldl -lnsl -lm -lpthread -lrt
g++ -m64 -static-libgcc -Wl,--no-as-needed -o objs/x64Linux3gcc4.8.2/HelloMessage_publisher objs/x64Linux3gcc4.8.2/HelloMessage_publisher.o objs/x64Linux3gcc4.8.2/HelloMessageSupport.o objs/x64Linux3gcc4.8.2/HelloMessagePlugin.o objs/x64Linux3gcc4.8.2/HelloMessage.o -L"/home/fgarcia/rti_connext_dds-5.2.0"/lib/x64Linux3gcc4.8.2 -lnddscppz -lnddscz -lnddscorez -ldl -lnsl -lm -lpthread -lrt
fgarcia@ubuntu:~/test/hello$ ./objs/x64Linux3gcc4.8.2/HelloMessage_publisher
Writing HelloMessage, count 0
Writing HelloMessage, count 1
Writing HelloMessage, count 2
I also know of people who have built the 5.2.0 code base on Fedora 23 (which I think includes GCC 5.3.1). I would like to undestand what could be happening in your scenario.
Are you using the Modern C++ API? I think I have been able to reproduce your problem generating an example for C++11 using rtiddsgen. Is this the same linker error you reported?:
g++ -m64 -static-libgcc -Wl,--no-as-needed -o objs/x64Linux3gcc4.8.2/HelloMessage_subscriber objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o objs/x64Linux3gcc4.8.2/HelloMessageImplPlugin.o objs/x64Linux3gcc4.8.2/HelloMessageImpl.o objs/x64Linux3gcc4.8.2/HelloMessage.o -L"/home/fgarcia/rti_connext_dds-5.2.0"/lib/x64Linux3gcc4.8.2 -lnddscpp2z -lnddscz -lnddscorez -ldl -lnsl -lm -lpthread -lrt
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::core::Entity::assert_not_closed() const':
HelloMessage_subscriber.cxx:(.text._ZNK3rti4core6Entity17assert_not_closedEv[_ZNK3rti4core6Entity17assert_not_closedEv]+0x76): undefined reference to `dds::core::AlreadyClosedError::AlreadyClosedError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::LoanedSample::data() const':
HelloMessage_subscriber.cxx:(.text._ZNK3rti3sub12LoanedSampleI12HelloMessageE4dataEv[_ZNK3rti3sub12LoanedSampleI12HelloMessageE4dataEv]+0x72): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::topic::TopicImpl::TopicImpl(dds::domain::TDomainParticipant const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)':
HelloMessage_subscriber.cxx:(.text._ZN3rti5topic9TopicImplI12HelloMessageEC1ERKN3dds6domain18TDomainParticipantINS_6domain21DomainParticipantImplEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN3rti5topic9TopicImplI12HelloMessageEC1ERKN3dds6domain18TDomainParticipantINS_6domain21DomainParticipantImplEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xb6): undefined reference to `rti::topic::UntypedTopicDescription::UntypedTopicDescription(std::pair<std::pair<dds_entityimpl*, bool="">, DDS_TopicDescriptionImpl*> const&, dds::domain::TDomainParticipant const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `std::pair<std::pair<dds_entityimpl*, bool="">, DDS_TopicDescriptionImpl*> rti::topic::detail::create_native_topic(dds::domain::TDomainParticipant const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, dds::core::TEntityQos const*, dds::topic::TopicListener*, dds::core::status::StatusMask const&)':
HelloMessage_subscriber.cxx:(.text._ZN3rti5topic6detail19create_native_topicI12HelloMessageEESt4pairIS4_IP14DDS_EntityImplbEP24DDS_TopicDescriptionImplERKN3dds6domain18TDomainParticipantINS_6domain21DomainParticipantImplEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESQ_PKNSB_4core10TEntityQosINS0_3qos12TopicQosImplEEEPNSB_5topic13TopicListenerIT_EERKNSR_6status10StatusMaskE[_ZN3rti5topic6detail19create_native_topicI12HelloMessageEESt4pairIS4_IP14DDS_EntityImplbEP24DDS_TopicDescriptionImplERKN3dds6domain18TDomainParticipantINS_6domain21DomainParticipantImplEEERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESQ_PKNSB_4core10TEntityQosINS0_3qos12TopicQosImplEEEPNSB_5topic13TopicListenerIT_EERKNSR_6status10StatusMaskE]+0x99): undefined reference to `rti::topic::detail::create_native_topic_untyped(dds::domain::TDomainParticipant const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, dds::core::TEntityQos const*, DDS_TopicListener*, dds::core::status::StatusMask const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::core::detail::RetainableType<rti::core::entity, 2ul="">::get_reference()':
HelloMessage_subscriber.cxx:(.text._ZN3rti4core6detail14RetainableTypeINS0_6EntityELm2EE13get_referenceEv[_ZN3rti4core6detail14RetainableTypeINS0_6EntityELm2EE13get_referenceEv]+0x82): undefined reference to `dds::core::AlreadyClosedError::AlreadyClosedError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::topic::detail::TopicListenerForwarder<dds::topic::topic<hellomessage, rti::topic::topicimpl="">, dds::topic::TopicListener >::inconsistent_topic_forward(void*, DDS_TopicWrapperI*, DDS_InconsistentTopicStatus const*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti5topic6detail22TopicListenerForwarderIN3dds5topic5TopicI12HelloMessageNS0_9TopicImplEEENS4_13TopicListenerIS6_EEE26inconsistent_topic_forwardEPvP17DDS_TopicWrapperIPK27DDS_InconsistentTopicStatus[_ZN3rti5topic6detail22TopicListenerForwarderIN3dds5topic5TopicI12HelloMessageNS0_9TopicImplEEENS4_13TopicListenerIS6_EEE26inconsistent_topic_forwardEPvP17DDS_TopicWrapperIPK27DDS_InconsistentTopicStatus]+0x7f): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::detail::DataReaderListenerForwarder<dds::sub::datareader<hellomessage, rti::sub::datareaderimpl="">, dds::sub::DataReaderListener >::requested_deadline_missed_forward(void*, DDS_DataReaderImpl*, DDS_RequestedDeadlineMissedStatus const*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE33requested_deadline_missed_forwardEPvP18DDS_DataReaderImplPK33DDS_RequestedDeadlineMissedStatus[_ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE33requested_deadline_missed_forwardEPvP18DDS_DataReaderImplPK33DDS_RequestedDeadlineMissedStatus]+0x85): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::detail::DataReaderListenerForwarder<dds::sub::datareader<hellomessage, rti::sub::datareaderimpl="">, dds::sub::DataReaderListener >::requested_incompatible_qos_forward(void*, DDS_DataReaderImpl*, DDS_RequestedIncompatibleQosStatus const*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE34requested_incompatible_qos_forwardEPvP18DDS_DataReaderImplPK34DDS_RequestedIncompatibleQosStatus[_ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE34requested_incompatible_qos_forwardEPvP18DDS_DataReaderImplPK34DDS_RequestedIncompatibleQosStatus]+0x8b): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::detail::DataReaderListenerForwarder<dds::sub::datareader<hellomessage, rti::sub::datareaderimpl="">, dds::sub::DataReaderListener >::sample_rejected_forward(void*, DDS_DataReaderImpl*, DDS_SampleRejectedStatus const*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE23sample_rejected_forwardEPvP18DDS_DataReaderImplPK24DDS_SampleRejectedStatus[_ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE23sample_rejected_forwardEPvP18DDS_DataReaderImplPK24DDS_SampleRejectedStatus]+0x8b): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::detail::DataReaderListenerForwarder<dds::sub::datareader<hellomessage, rti::sub::datareaderimpl="">, dds::sub::DataReaderListener >::liveliness_changed_forward(void*, DDS_DataReaderImpl*, DDS_LivelinessChangedStatus const*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE26liveliness_changed_forwardEPvP18DDS_DataReaderImplPK27DDS_LivelinessChangedStatus[_ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE26liveliness_changed_forwardEPvP18DDS_DataReaderImplPK27DDS_LivelinessChangedStatus]+0x8b): undefined reference to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o:HelloMessage_subscriber.cxx:(.text._ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE22data_available_forwardEPvP18DDS_DataReaderImpl[_ZN3rti3sub6detail27DataReaderListenerForwarderIN3dds3sub10DataReaderI12HelloMessageNS0_14DataReaderImplEEENS4_18DataReaderListenerIS6_EEE22data_available_forwardEPvP18DDS_DataReaderImpl]+0x6c): more undefined references to `dds::core::PreconditionNotMetError::PreconditionNotMetError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)' follow
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::core::detail::get_ptr_from_native_entity<rti::topic::topicimpl, DDS_TopicWrapperI>::do_it(DDS_TopicWrapperI*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti4core6detail26get_ptr_from_native_entityINS_5topic9TopicImplI12HelloMessageEE17DDS_TopicWrapperIE5do_itEPS7_[_ZN3rti4core6detail26get_ptr_from_native_entityINS_5topic9TopicImplI12HelloMessageEE17DDS_TopicWrapperIE5do_itEPS7_]+0xf9): undefined reference to `dds::core::InvalidDowncastError::InvalidDowncastError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::core::detail::get_ptr_from_native_entity<rti::sub::datareaderimpl, DDS_DataReaderImpl>::do_it(DDS_DataReaderImpl*)':
HelloMessage_subscriber.cxx:(.text._ZN3rti4core6detail26get_ptr_from_native_entityINS_3sub14DataReaderImplI12HelloMessageEE18DDS_DataReaderImplE5do_itEPS7_[_ZN3rti4core6detail26get_ptr_from_native_entityINS_3sub14DataReaderImplI12HelloMessageEE18DDS_DataReaderImplE5do_itEPS7_]+0xf9): undefined reference to `dds::core::InvalidDowncastError::InvalidDowncastError(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `rti::sub::DataReaderImpl::close()':
HelloMessage_subscriber.cxx:(.text._ZN3rti3sub14DataReaderImplI12HelloMessageE5closeEv[_ZN3rti3sub14DataReaderImplI12HelloMessageE5closeEv]+0x75): undefined reference to `rti::topic::is_builtin_topic(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `dds::topic::TopicDescription<hellomessage, rti::topic::topicdescriptionimpl="">::name() const':
HelloMessage_subscriber.cxx:(.text._ZNK3dds5topic16TopicDescriptionI12HelloMessageN3rti5topic20TopicDescriptionImplEE4nameEv[_ZNK3dds5topic16TopicDescriptionI12HelloMessageN3rti5topic20TopicDescriptionImplEE4nameEv]+0x35): undefined reference to `rti::topic::UntypedTopicDescription::name[abi:cxx11]() const'
objs/x64Linux3gcc4.8.2/HelloMessage_subscriber.o: In function `dds::topic::TopicDescription<hellomessage, rti::topic::topicdescriptionimpl="">::type_name() const':
HelloMessage_subscriber.cxx:(.text._ZNK3dds5topic16TopicDescriptionI12HelloMessageN3rti5topic20TopicDescriptionImplEE9type_nameEv[_ZNK3dds5topic16TopicDescriptionI12HelloMessageN3rti5topic20TopicDescriptionImplEE9type_nameEv]+0x35): undefined reference to `rti::topic::UntypedTopicDescription::type_name[abi:cxx11]() const'
objs/x64Linux3gcc4.8.2/HelloMessage.o: In function `dds::topic::topic_type_support::register_type(dds::domain::TDomainParticipant&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&)':
HelloMessage.cxx:(.text+0x2b8): undefined reference to `rti::domain::register_type_plugin(dds::domain::TDomainParticipant&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, PRESTypePlugin* (*)(), void (*)(PRESTypePlugin*))'
collect2: error: ld returned 1 exit status
makefile_HelloMessage_x64Linux3gcc4.8.2:58: recipe for target 'objs/x64Linux3gcc4.8.2/HelloMessage_subscriber' failed
make: *** [objs/x64Linux3gcc4.8.2/HelloMessage_subscriber] Error 1
The developers I mentioned in my earlier post told me that building RTI Connext DDS from source GCC > 5 fixes the issue, but we are looking for interim solution given the fact currently there are no RTI Connext DDS libraries built wiht GCC > 5.
Massimo, are you using the Modern C++ API? If you are using the Traditional C++ API or other languages you should be able to work just fine with the libraries for Ubuntu 14.04 on Ubuntu 16.04.
Alex's workaround fixed my linking problems. I set the _GLIBCXX_USE_CXX11_ABI macro to 0 before including any other library header in both my publisher and subscriber applications and was able to link and run with no problem. Here's an example:
#define _GLIBCXX_USE_CXX11_ABI 0
#include <iostream>
#include <dds/pub/ddspub.hpp>
#include <rti/util/util.hpp> // for sleep()
#include "HelloMessage.hpp"
void publisher_main(int domain_id, int sample_count)
I am unsure of the consequences of using this macro when linking against other third party libraries that may have been built with a GCC > 5 compiler, but you could give it a shot.
Alternatively, you can upgrade to Ubuntu 16.04 and keep using GCC 4.8 to build your DDS applications like you do in 14.04. To install GCC 4.8 run:
$ sudo apt-get install gcc-4.8 g++-4.8
And then modify the makefile to use g++-4.8 as opposed to g++. Note that you will need to recompile the object files before linking.
Hi Massimo,
RTI 5.2 does not compile with gcc 5.0 or higher. You will get a linker error.
Hi robuser,
Can you share the error you run into when linking RTI Connext DDS 5.2.0 with GCC 5.0 or higher? I have been successful building and running a simple example on Ubuntu 16.04 64-bit. In particular, have installed the 5.2.0 x64Linux host with the x64Linux3gcc4.8.2 target and run the following commands:
I also know of people who have built the 5.2.0 code base on Fedora 23 (which I think includes GCC 5.3.1). I would like to undestand what could be happening in your scenario.
Thanks,
Fernando.
Hi robuser,
Are you using the Modern C++ API? I think I have been able to reproduce your problem generating an example for C++11 using rtiddsgen. Is this the same linker error you reported?:
The developers I mentioned in my earlier post told me that building RTI Connext DDS from source GCC > 5 fixes the issue, but we are looking for interim solution given the fact currently there are no RTI Connext DDS libraries built wiht GCC > 5.
Massimo, are you using the Modern C++ API? If you are using the Traditional C++ API or other languages you should be able to work just fine with the libraries for Ubuntu 14.04 on Ubuntu 16.04.
I will keep you posted.
Thanks,
Fernando.
That link error happens when you try to link libraries that have been compiled with gcc 4.x into an application that uses gcc 5.x.
Since we don't officially support gcc 5.x, yet, can you try this stackoverflow suggestion?
Hello Fernando,
yes, I'm working with Modern C++. I think that we will stay on Ubuntu 14.04 until RTI does not release an official version that supports Ubuntu 16.04.
Is there any idea about when the next General Access Release of RTI Connext DDS (including support for Ubuntu 16.04 platform) will be available ?
kind regards
Hi,
You talk now about GCC 5.x but GCC 6.1 is already available and will be used by people soon.
Johnny
Hi Massimo,
Alex's workaround fixed my linking problems. I set the
_GLIBCXX_USE_CXX11_ABI
macro to0
before including any other library header in both my publisher and subscriber applications and was able to link and run with no problem. Here's an example:I am unsure of the consequences of using this macro when linking against other third party libraries that may have been built with a GCC > 5 compiler, but you could give it a shot.
Alternatively, you can upgrade to Ubuntu 16.04 and keep using GCC 4.8 to build your DDS applications like you do in 14.04. To install GCC 4.8 run:
And then modify the makefile to use
g++-4.8
as opposed tog++
. Note that you will need to recompile the object files before linking.As for the release date of the new version of RTI Connext DDS, I do not think it is settled yet, but I will ask around.
Let me know if any of these workarounds work for you.
Thanks,
Fernando.