berndpfrommer / basalt_ros1

ROS1 wrapper for basalt VIO
30 stars 11 forks source link

CMAKE ERROR WHEN TRYING TO INSTALL BASALT ROS1 #12

Closed ergys00 closed 1 year ago

ergys00 commented 1 year ago

When i try to install basalt_ros1 it gives me that error and the installation stops /usr/bin/ld: CMakeFiles/viz_flow_node.dir/src/viz_flow_node.cpp.o: undefined reference to symbol '_ZN2cv3MatC1Eiii'

berndpfrommer commented 1 year ago

clean your workspace (completely remove "devel", "build", and "install" (if present)), then run "catkin config" and post output here. Then run "catkin build --verbose" and post link to output here. I suspect there are other warning/error messages before that. What operating system and version of ROS are you running on?

ergys00 commented 1 year ago

that is the output of catkin config:

Profile: default Extending: [env] /opt/ros/melodic Workspace: /root/workspace/catkin_ws_ov

Build Space: [missing] /root/workspace/catkin_ws_ov/build Devel Space: [missing] /root/workspace/catkin_ws_ov/devel Install Space: [unused] /root/workspace/catkin_ws_ov/install Log Space: [missing] /root/workspace/catkin_ws_ov/logs Source Space: [exists] /root/workspace/catkin_ws_ov/src DESTDIR: [unused] None

Devel Space Layout: linked Install Space Layout: None

Additional CMake Args: -DCMAKE_BUILD_TYPE=Release Additional Make Args: None Additional catkin Make Args: None Internal Make Job Server: True Cache Job Environments: False

Whitelisted Packages: None Blacklisted Packages: None

Workspace configuration appears valid.

ergys00 commented 1 year ago

i'm running on UBUNTU 18.04 with ros melodic (the base version, i manually installed opencv 3.4), that's the output of catkin build --verbose outputofcatkin.txt

berndpfrommer commented 1 year ago

You seem to have a custom version of opencv under /usr/local that apparently gets pulled in and causes havoc. I don't know what the righ fix for that is. Is there a way you can remove /usr/local from the search path? I'm not an expert on build environments unfortunately.

/usr/bin/cmake -E cmake_link_script CMakeFiles/viz_flow_node.dir/link.txt --verbose=1
/usr/bin/c++  -std=c++17 -Wall -Wextra -ftemplate-backtrace-limit=0 -march=native  -O3 -DNDEBUG  -rdynamic CMakeFiles/viz_flow_node.dir/src/viz_flow_node.cpp.o  -o /root/workspace/catkin_ws_ov/devel/.private/basalt_ros1/lib/basalt_ros1/viz_flow_node -Wl,-rpath,/opt/ros/melodic/lib:/root/works\
pace/catkin_ws_ov/devel/.private/basalt/lib /opt/ros/melodic/lib/libnodeletlib.so /opt/ros/melodic/lib/libbondcpp.so -luuid /opt/ros/melodic/lib/libtf.so /opt/ros/melodic/lib/libtf2_ros.so /opt/ros/melodic/lib/libactionlib.so /opt/ros/melodic/lib/libtf2.so /opt/ros/melodic/lib/libcv_bridge.so\
 /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0 /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0 /opt/ros/melodic/lib/libimage_transport.so /opt/ros/melodic/lib/libmessage_filters.so /opt/ros/melodic/lib/libclass_loader.so -lPocoFo\
undation -ldl /opt/ros/melodic/lib/libroscpp.so /opt/ros/melodic/lib/librosconsole.so /opt/ros/melodic/lib/librosconsole_log4cxx.so /opt/ros/melodic/lib/librosconsole_backend_interface.so -llog4cxx -lboost_regex /opt/ros/melodic/lib/libxmlrpcpp.so /opt/ros/melodic/lib/libroslib.so /opt/ros/me\
lodic/lib/librospack.so -lpython2.7 -lboost_filesystem -lboost_program_options -ltinyxml2 /opt/ros/melodic/lib/libroscpp_serialization.so /opt/ros/melodic/lib/librostime.so /opt/ros/melodic/lib/libcpp_common.so -lboost_system -lboost_thread -lboost_chrono -lboost_date_time -lboost_atomic -lpt\
hread /usr/lib/x86_64-linux-gnu/libconsole_bridge.so.0.4 /root/workspace/catkin_ws_ov/devel/.private/basalt/lib/libbasalt.so
/usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by /root/workspace/catkin_ws_ov/devel/.private/basalt/lib/libbasalt.so, may conflict with libopencv_imgproc.so.3.2
/usr/bin/ld: warning: libopencv_core.so.3.4, needed by /root/workspace/catkin_ws_ov/devel/.private/basalt/lib/libbasalt.so, may conflict with libopencv_core.so.3.2
/usr/bin/ld: CMakeFiles/viz_flow_node.dir/src/viz_flow_node.cpp.o: undefined reference to symbol '_ZN2cv3MatC1Eiii'
//usr/local/lib/libopencv_core.so.3.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/viz_flow_node.dir/build.make:134: recipe for target '/root/workspace/catkin_ws_ov/devel/.private/basalt_ros1/lib/basalt_ros1/viz_flow_node' failed
make[2]: Leaving directory '/root/workspace/catkin_ws_ov/build/basalt_ros1'
CMakeFiles/Makefile2:1321: recipe for target 'CMakeFiles/viz_flow_node.dir/all' failed
ergys00 commented 1 year ago

I solved the problem by editing the CMakelist.txt file in the folder basalt_ros1. In line 147 i changed "target_link_libraries(viz_flow_node ${catkin_LIBRARIES})" to "target_link_libraries(viz_flow_node ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})"