Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link error for Connext services on OS 10.10 #31

Closed
wjwwood opened this issue Mar 31, 2015 · 5 comments
Closed

Link error for Connext services on OS 10.10 #31

wjwwood opened this issue Mar 31, 2015 · 5 comments
Assignees
Labels
bug Something isn't working

Comments

@wjwwood
Copy link
Member

wjwwood commented Mar 31, 2015

On OS X 10.10 I get this linkedit error:

Undefined symbols for architecture x86_64:
  "connext::check_retcode(DDS_ReturnCode_t, char const*, RTILogMessage const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:
      connext::details::SampleBase<userland_msgs::dds_::AddTwoIntsResponse_, DDS_WriteParams_t>::initialize() in AddTwoInts_ServiceTypeSupport.cpp.o
      connext::details::SampleBase<userland_msgs::dds_::AddTwoIntsResponse_, DDS_WriteParams_t>::copy_from(userland_msgs::dds_::AddTwoIntsResponse_ const&) in AddTwoInts_ServiceTypeSupport.cpp.o
      connext::details::SampleBase<userland_msgs::dds_::AddTwoIntsResponse_, DDS_SampleInfo>::initialize() in AddTwoInts_ServiceTypeSupport.cpp.o
      connext::details::SampleBase<userland_msgs::dds_::AddTwoIntsResponse_, DDS_SampleInfo>::copy_from(userland_msgs::dds_::AddTwoIntsResponse_ const&) in AddTwoInts_ServiceTypeSupport.cpp.o
      void connext::details::copy_sample<userland_msgs::dds_::AddTwoIntsResponse_, DDS_SampleInfo>(connext::Sample<userland_msgs::dds_::AddTwoIntsResponse_>&, userland_msgs::dds_::AddTwoIntsResponse_ const&, DDS_SampleInfo const&) in AddTwoInts_ServiceTypeSupport.cpp.o
      connext::LoanedSamples<userland_msgs::dds_::AddTwoIntsResponse_>::move_construct_from_loans(userland_msgs::dds_::AddTwoIntsResponse_DataReader*, userland_msgs::dds_::AddTwoIntsResponse_Seq&, DDS_SampleInfoSeq&) in AddTwoInts_ServiceTypeSupport.cpp.o
      connext::details::SampleBase<userland_msgs::dds_::AddTwoIntsRequest_, DDS_SampleInfo>::initialize() in AddTwoInts_ServiceTypeSupport.cpp.o
      ...
  "connext::RequesterParams::service_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      userland_msgs::service_type_support::create_requester__AddTwoInts(void*, char const*, void**) in AddTwoInts_ServiceTypeSupport.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

My current theory is that the shared libraries provided by RTI was not compiled with the same version of the std library as I have here on 10.10. I'd like to reach out to RTI on this one.

Until this gets resolved, the OS X CI job will continue to fail.

@wjwwood wjwwood added the bug Something isn't working label Mar 31, 2015
@dirk-thomas dirk-thomas added the ready Work is about to start (Kanban column) label Mar 31, 2015
@wjwwood wjwwood added in progress Actively being worked on (Kanban column) and removed ready Work is about to start (Kanban column) labels Mar 31, 2015
@wjwwood
Copy link
Member Author

wjwwood commented Apr 1, 2015

I looked at this with @gerkey and poked around on the internet. It seems there is good evidence supporting the idea that my version of std::string, which is defined in libc++, generates a different symbol from the std::string with the GNU std library called libstdc++.

I cannot work around this by choosing to use libstdc++ because on OS X it does not support C++11, which we are using. Therefore I will need a new version of the RTI libraries which are built against libc++ rather than libstdc++. Here are some supporting materials for this conclusion:

I'm going to contact RTI about getting a newer version of the shared libraries.

@wjwwood
Copy link
Member Author

wjwwood commented Apr 21, 2015

TODO: re-compare test numbers (#33) after this is fixed.

@dirk-thomas
Copy link
Member

Latest job failing with this: http://54.183.26.131:8080/view/ros2/job/ros2_batch_ci_osx/95/console

Undefined symbols for architecture x86_64:
  "connext::check_retcode(DDS_ReturnCode_t, char const*, RTILogMessage const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool)", referenced from:
      connext::details::type_support_adapter<DDS_DynamicData>::register_type(DDSTypeSupport*, DDSDomainParticipant*) in functions.cpp.o
      connext::LoanedSamples<DDS_DynamicData>::move_construct_from_loans(DDSDynamicDataReader*, DDS_DynamicDataSeq&, DDS_SampleInfoSeq&) in functions.cpp.o
  "connext::RequesterParams::service_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      _rmw_create_client in functions.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@tfoote
Copy link
Contributor

tfoote commented May 5, 2015

New package from RTI, trying to test, but it's not working out of the box.

@wjwwood
Copy link
Member Author

wjwwood commented May 6, 2015

Ok, I've got it working, here is a passing job (with all the tests I would expect) with Connext turned on:

http://54.183.26.131:8080/job/ros2_batch_ci_osx/119/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants