Skip to content

Workaround for the change in libnddscore.so in connext 5.2.0 between gcc4.6.3 and gcc4.8.2#55

Merged
wjwwood merged 2 commits intoros2:masterfrom
dhood:connext-workaround
Apr 28, 2016
Merged

Workaround for the change in libnddscore.so in connext 5.2.0 between gcc4.6.3 and gcc4.8.2#55
wjwwood merged 2 commits intoros2:masterfrom
dhood:connext-workaround

Conversation

@dhood
Copy link
Copy Markdown
Member

@dhood dhood commented Apr 28, 2016

Fixes #52, which I currently understand to be caused by the connext 5.2.0 package labelled as built with gcc4.8.2 not exporting a dependency on dl (in contrast to the one labelled with gcc4.6.3).

The executables do have -ldl in the linking stage, but --no-as-needed is needed to ensure that the linking actually happens.

Adding a dlopen(NULL, RTLD_NOW); call to the service_fixture and client_fixture files is an alternative workaround because it forces dl to not be considered unneeded.

No regressions that I can see
http://ci.ros2.org/job/ci_linux/1243/
http://ci.ros2.org/job/ci_windows/1281/
http://ci.ros2.org/job/ci_osx/998/

@wjwwood wjwwood added the in progress Actively being worked on (Kanban column) label Apr 28, 2016
if(NOT "${ARGN} " STREQUAL " ")
message(FATAL_ERROR "append_link_flags() called with "
"unused arguments: ${ARGN}")
endif()
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is a local macro which is not used externally I would not bother with this check and save the four lines.

@dhood dhood force-pushed the connext-workaround branch from 69de08c to 2ae8819 Compare April 28, 2016 21:28
@dirk-thomas
Copy link
Copy Markdown
Member

lgtm

@wjwwood
Copy link
Copy Markdown
Member

wjwwood commented Apr 28, 2016

lgtm too

@wjwwood wjwwood merged commit 7aeb957 into ros2:master Apr 28, 2016
@wjwwood wjwwood removed the in progress Actively being worked on (Kanban column) label Apr 28, 2016
@dirk-thomas
Copy link
Copy Markdown
Member

With Connext 5.2.3 on Xenial I needed the same patch for these targets (note all failing targets are ending with rmw_fastrtps_cpp):

  • intra_process_demo
    • cyclic_pipeline__rmw_fastrtps_cpp
    • two_node_pipeline__rmw_fastrtps_cpp
  • rclcpp_examples
    • list_parameters_async__rmw_fastrtps_cpp
    • parameter_events_async__rmw_fastrtps_cpp
  • test_communication
    • test_replier_cpp__rmw_fastrtps_cpp
    • test_subscriber_cpp__rmw_fastrtps_cpp
    • test_subscription_valid_data_cpp__rmw_fastrtps_cpp
  • test_rclcpp
    • gtest_multithreaded__rmw_fastrtps_cpp
    • gtest_subscription__rmw_fastrtps_cpp
    • test_services_client_cpp__rmw_fastrtps_cpp
  • tlsf_cpp
    • test_tlsf__rmw_fastrtps_cpp
  • pendulum_contol
    • pendulum_demo__rmw_fastrtps_cpp
    • pendulum_logger__rmw_fastrtps_cpp
    • pendulum_teleop__rmw_fastrtps_cpp

I don't know why only for those targets are affected and not for the others. And therefore I hesitate to apply the same patch in these cases.

Since the RTI Connext release notes mentioned that --no-as-needed is necessary I am leaning to expose this in connext_cmake_module and make sure it is being applied everywhere.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linking errors for client_fixture and service_fixture tests

3 participants