tum-vision / dvo_slam

Dense Visual Odometry and SLAM
632 stars 306 forks source link

libdvo_slam.so: various undefined references to g2o::csparse_extension and cs_di_* #2

Closed lynncodd closed 10 years ago

lynncodd commented 10 years ago

Ubuntu 12.04 LTS ROS Groovy PCL 1.7

I hit another issue after resolving Issue #1 and was able to resolve it by installing libsuitesparse-dev and all of it's dependent packages. Now, I'm stuck with the following undefined references after running "rosmake dvo_core dvo_ros dvo_slam dvo_benchmark".

... ... ... [rosmake-1] Starting >>> dvo_core [ make ]
[rosmake-3] Finished <<< g2o [PASS] [ 2.91 seconds ]
[rosmake-1] Finished <<< dvo_core [PASS] [ 3.37 seconds ]
[rosmake-1] Starting >>> dvo_ros [ make ]
[rosmake-1] Finished <<< dvo_ros [PASS] [ 3.12 seconds ]
[rosmake-1] Starting >>> dvo_slam [ make ]
[ rosmake ] Last 40 lineso_slam: 65.7 sec ] [ 1 Active 65/67 Complete ] {------------------------------------------------------------------------------- [ 81%] Building CXX object CMakeFiles/dvo_slam.dir/src/serialization/map_serializer.cpp.o [ 86%] Building CXX object CMakeFiles/dvo_slam.dir/src/constraints/constraint_proposal_validator.cpp.o [ 90%] Building CXX object CMakeFiles/dvo_slam.dir/src/visualization/graph_visualizer.cpp.o [ 95%] Building CXX object CMakeFiles/dvo_slam.dir/src/types.cpp.o /home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/src/visualization/graph_visualizer.cpp: In member function ‘void dvo_slam::visualization::internal::GraphVisualizerImpl::onEdgeDeleteClick(const FeedbackConstPtr&)’: /home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/src/visualization/graph_visualizer.cpp:154:28: warning: unused variable ‘edge’ [-Wunused-variable] Linking CXX shared library ../lib/libdvo_slam.so make[3]: Leaving directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' [ 95%] Built target dvo_slam make[3]: Entering directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' Scanning dependencies of target camera_keyframe_tracker make[3]: Leaving directory /home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' make[3]: Entering directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' [100%] Building CXX object CMakeFiles/camera_keyframe_tracker.dir/src/camera_keyframe_tracker_node.cpp.o Linking CXX executable ../bin/camera_keyframe_tracker ../lib/libdvo_slam.so: undefined reference to g2o::csparse_extension::cs_chol_workspace(cs_di_sparse const*, cs_di_symbolic const*, int*, double*)' ../lib/libdvo_slam.so: undefined reference tocs_di_pinv' ../lib/libdvo_slam.so: undefined reference to cs_di_nfree' ../lib/libdvo_slam.so: undefined reference tocs_di_symperm' ../lib/libdvo_slam.so: undefined reference to g2o::csparse_extension::writeCs2Octave(char const*, cs_di_sparse const*, bool)' ../lib/libdvo_slam.so: undefined reference tocs_di_post' ../lib/libdvo_slam.so: undefined reference to cs_di_etree' ../lib/libdvo_slam.so: undefined reference tocs_di_counts' ../lib/libdvo_slam.so: undefined reference to g2o::csparse_extension::cs_cholsolsymb(cs_di_sparse const*, double*, cs_di_symbolic const*, double*, int*)' ../lib/libdvo_slam.so: undefined reference tocs_di_sfree' ../lib/libdvo_slam.so: undefined reference to cs_di_spfree' ../lib/libdvo_slam.so: undefined reference tocs_di_amd' ../lib/libdvo_slam.so: undefined reference to cs_di_cumsum' ../lib/libdvo_slam.so: undefined reference tocs_di_schol' ../lib/libdvo_slam.so: undefined reference to cs_di_calloc' ../lib/libdvo_slam.so: undefined reference tocs_di_malloc' ../lib/libdvo_slam.so: undefined reference to cs_di_free' collect2: ld returned 1 exit status make[3]: *** [../bin/camera_keyframe_tracker] Error 1 make[3]: Leaving directory/home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' make[2]: * [CMakeFiles/camera_keyframe_tracker.dir/all] Error 2 make[2]: Leaving directory `/home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' make[1]: * [all] Error 2 make[1]: Leaving directory`/home/rpslaptop32/ros_workspace/dvo_slam/dvo_slam/build' -------------------------------------------------------------------------------} [ rosmake ] Output from build of package dvo_slam written to: [ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131015-111229/dvo_slam/build_output.log
[rosmake-1] Finished <<< dvo_slam [FAIL] [ 65.75 seconds ]
[ rosmake ] Halting due to failure in package dvo_slam. [ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:
[ rosmake ] Built 66 packages with 1 failures.
[ rosmake ] Summary output to directory
[ rosmake ] /home/rpslaptop32/.ros/rosmake/rosmake_output-20131015-111229

Again, any help would be much appreciated. The dvo_slam's CMakeLists.txt already has

target_link_libraries(${PROJECT_NAME} g2o_core g2o_solver_dense g2o_solver_csparse g2o_csparse_extension csparse g2o_types_slam3d )

Maybe it's missing some?

Thanks in advance! Lynn

christiankerl commented 10 years ago

I guess you compiled the g2o package before installing libsuitesparse-dev. If that's the case run rosmake with the --pre-clean--pre-clean option. This will rebuild g2o which then detects that suitesparse is installed and build the missing binary.

lynncodd commented 10 years ago

Thanks again! That worked.