Problems migrating to Jade -> cannot find -l:/usr/lib/.../*.so
I am trying to migrate a project from Indigo to Jade. When I run catkin_make I get cannot find -l: errors (output below).
I am running ubuntu 15.04 and installed ROS Jade via the package manager. As it looks like it might be a problem with ld I am using version 2.25
The installation of ROS appears to be fine. I do not have the problem if I create a new project with subscribers and publishers like the ROS tutorials
Does anyone have any ideas?
$ catkin_make
Base path: /home/**/catkin_ws
Source space: /home/**/catkin_ws/src
Build space: /home/**/catkin_ws/build
Devel space: /home/**/catkin_ws/devel
Install space: /home/**/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/**/catkin_ws/build"
####
####
#### Running command: "make -j8 -l8" in "/home/**/catkin_ws/build"
####
...
...
[ 6%] Linking CXX executable ../../../../bin/a1
Building CXX object ../../../CMakeFiles/f.dir/dt.cxx.o
[ 6%] /usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libboost_signals.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libboost_system.so
...
collect2: error: ld returned 1 exit status
../../../../CMakeFiles/sc.dir/build.make:119: recipe for target 'bin/sc' failed
make[2]: *** [bin/sc] Error 1
CMakeFiles/Makefile2:1648: recipe for target '../../../../CMakeFiles/sc.dir/all' failed
make[1]: *** [../../../../CMakeFiles/sc.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
...
...
All the libraries it mentions are installed. For example
$ apt-cache policy libboost-signals-dev
libboost-signals-dev:
Installed: 1.55.0.2
Candidate: 1.55.0.2
Version table:
*** 1.55.0.2 0
500 http://us.archive.ubuntu.com/ubuntu/ vivid/universe amd64 Packages
100 /var/lib/dpkg/status
CMakeLists.txt
The package is split up into many sub directories. So what follows below is the main package CMakeLists and then an example of one of the sub directory packages that is failing
cmake_minimum_required(VERSION 2.8.3)
project(main)
find_package(catkin REQUIRED COMPONENTS message_generation rospy)
catkin_package(CATKIN_DEPENDS roscpp)
...
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fPIC")
...
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
)
catkin_python_setup()
add_subdirectory(dir1)
add_subdirectory(dir2)
add_subdirectory(sc)
add_subdirectory(dir4)
add_subdirectory(dir5)
Example sub directory CMakeLists.txt. This is just one of many that are failing:
cmake_minimum_required(VERSION 2.4.6)
# Find ros dependencies...
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)
set( sc_srcs
main.cpp
ScNode.cpp
${sc_moc_files}
)
set( sc_hrs
ScNode.h
)
# All ros libs are in the same directory
# so we just list one of them here
link_directories(
${ros-roscpp_LIBRARY_DIRS}
)
set( sc_libs
${ros-roscpp_LIBRARIES}
${ros-cv_bridge_LIBRARIES}
${ros-image_transport_LIBRARIES}
)
include_directories(
${ros-roscpp_conversions_INCLUDE_DIRS}
)
add_executable(sc ${sc_srcs} ${sc_hdrs})
target_link_libraries(sc ${sc_libs})
set_target_properties(sc PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Did you try to install dependencies of your packages via
rosdep update
/rosdep install mypkg
?Yes I have - no joy there
Can you edit your post to include your CMakeLists.txt ?
Sure, done
I am just a bit confused by your example package CMakeLists.txt, is it intended to be used by catkin ? It does not contain any catkin instructions. Usually linking your targets against ${catkin_LIBRARIES} does the job for a catkin package.. Did you say this compiled with catkin on Indigo?
@al-dev: that is not the
CMakeLists.txt
from the package, but of the workspace itself. @mhar: @al-dev asked for theCMakeLists.txt
of the package that's giving you problems.I think I've given you the right CMakeLists.txt now.
@al-dev yes it complies fine with catkin on Indigo - hopefully it makes more sense now
The project is split into sub directories - so I've given you the main project CMakeLists.txt and then one of the sub directories