ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org |
![]() | 1 | initial version |
Problem solved
The problem is less to do with the upgrade from Indigo to Jade and more about the ld version. Our older build (indigo) is still using rosbuild package config definitions (pkg_check_modules(...). As the upgraded system uses a newer version of ld (version 2.25) these rosbuild definitions were breaking.
The problem was solved by using catkin
For example:
include($ENV{ROS_ROOT}/core/rosbuild/FindPkgConfig.cmake)
pkg_check_modules(ros-roscpp REQUIRED roscpp)
pkg_check_modules(ros-cv_bridge REQUIRED cv_bridge)
pkg_check_modules(ros-image_transport REQUIRED image_transport)
becomes
find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport)
Further detail
The package config files provides paths to that are incompatible with newer versions of ld. In versions 2.25 and greater the Libs path, in the form -l:/full/path/to/library.so no longer works. Instead the newer version of ld expects the path in the form -l:library. More information can be found here: https://github.com/ros/catkin/issues/694
The problem has been resolved in some of the magic under catkin. In find_package(catkin..) catkin looks up the pkgconfig file and fixes the paths under Libs.