Two versions of liboctomap installed by ros-melodic-moveit
After installing moveit on 18.04
sudo apt install ros-melodic-moveit
I have the following
/opt/ros/melodic/lib/liboctomap.so.1.9
/usr/lib/liboctomap.so.1.8
Is this intended or is this a bug? Does anyone know an efficient way to know which version does moveit_core links against?
I depend on also on dart, which links with 1.8.
Edit: More precisions after gvdhoorm's comment:
I devellop libsigned_distance_field.so, which relies on a library using dart, which links to octomap 1.8 and I currently get :
ldd devel/lib/libsigned_distance_field.so | grep octomap
liboctomap.so.1.9 => /opt/ros/melodic/lib/liboctomap.so.1.9 (0x00007f5e43f9c000)
liboctomap.so.1.8 => /usr/lib/liboctomap.so.1.8 (0x00007f5e341bb000)
And I can not figure out how the linker picked up liboctomap.so.1.9 since all the dependencies that I can see use only 1.8.
Is there a way to know how the libraries are chosen at linking time?
In the CMakeLists.txt I have
add_library(${PROJECT_NAME} SHARED ${LIB_SOURCES} ${INC_SIGNED_DISTANCE_FIELD})
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
When I print catkin_LIBRARIES : No mention of liboctomap at all At link time with VERBOSE=1 it suddenly appears and it points to 1.9.
Does anyone know how I can prevent 1.9 from being passed to the linker?
Run
ldd
against binaries and it should tell you which libraries it has linked against.But I predict it's going to be
liboctomap.so.1.9
, unless there is no path hardcoded in the binary and/usr/lib
appears before/opt/ros/melodic/lib
on the linker search path and sonames are not used when linking.