i3tyc / AdaptSLAM

AdaptSLAM: Edge-Assisted Adaptive SLAM with Resource Constraints via Uncertainty Minimization
https://github.com/i3tyc/AdaptSLAM
28 stars 4 forks source link

Compile according to the build_ros.sh file, execute the make-j command, and report the opencv3.4 related errors #1

Closed LSGL-LLW closed 7 months ago

LSGL-LLW commented 1 year ago

Compile according to the build_ros.sh file of AdaptSLAM, execute the make - j command, and report an error:

/usr/bin/ld: warning: libpangolin.so, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_calib3d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_features2d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_highgui.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_core.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) ../../../../lib/libORB_SLAM3.so:对‘cv::String::allocate(unsigned long)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::getTextSize(cv::String const&, int, double, int, int*)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::error(int, cv::String const&, char const*, char const*, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::operator<<(cv::FileStorage&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::Formatter::get(int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, double)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘pangolin::Handler3D::Handler3D(pangolin::OpenGlRenderState&, pangolin::AxisDirection, float, float)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::FileStorage(cv::String const&, int, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::deallocate()’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::read(cv::FileNode const&, cv::String&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::putText(cv::_InputOutputArray const&, cv::String const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::_OutputArray::create(int, int, int, int, bool, int) const’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::namedWindow(cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::operator[](cv::String const&) const’未定义的引用 collect2: error: ld returned 1 exit status CMakeFiles/RGBD.dir/build.make:234: recipe for target '../RGBD' failed make[2]: *** [../RGBD] Error 1 CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/RGBD.dir/all' failed make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2 make[1]: *** 正在等待未完成的任务.... /usr/bin/ld: warning: libpangolin.so, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_calib3d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_features2d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_highgui.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_core.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) CMakeFiles/Mono.dir/src/ros_mono.cc.o:在函数‘ImageGrabber::GrabImage(boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > const> const&)’中: ros_mono.cc:(.text+0x1fa):对‘ORB_SLAM3::System::TrackMonocular(cv::Mat const&, double const&, std::vector<ORB_SLAM3::IMU::Point, std::allocator<ORB_SLAM3::IMU::Point> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::allocate(unsigned long)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::getTextSize(cv::String const&, int, double, int, int*)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::error(int, cv::String const&, char const*, char const*, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::operator<<(cv::FileStorage&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::Formatter::get(int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, double)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘pangolin::Handler3D::Handler3D(pangolin::OpenGlRenderState&, pangolin::AxisDirection, float, float)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::FileStorage(cv::String const&, int, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::deallocate()’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::read(cv::FileNode const&, cv::String&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::putText(cv::_InputOutputArray const&, cv::String const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::_OutputArray::create(int, int, int, int, bool, int) const’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::namedWindow(cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::operator[](cv::String const&) const’未定义的引用 /usr/bin/ld: warning: libpangolin.so,collect2: error: ld returned 1 exit status needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_calib3d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_features2d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_highgui.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_core.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) CMakeFiles/Mono_Inertial.dir/src/ros_mono_inertial.cc.o:在函数‘ImageGrabber::SyncWithImu()’中: ros_mono_inertial.cc:(.text+0x11bd):对‘ORB_SLAM3::System::TrackMonocular(cv::Mat const&, double const&, std::vector<ORB_SLAM3::IMU::Point, std::allocator<ORB_SLAM3::IMU::Point> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::allocate(unsigned long)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::getTextSize(cv::String const&, int, double, int, int*)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::error(int, cv::String const&, char const*, char const*, int)’未定义的引用 ../CMakeFiles/Mono.dir/build.make:234: recipe for target '../Mono' failed ../make[2]: *** [../Mono] Error 1 ../../lib/libORB_SLAM3.so:对‘cv::operator<<(cv::FileStorage&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对CMakeFiles/Makefile2:434: recipe for target 'CMakeFiles/Mono.dir/all' failed ��make[1]: *** [CMakeFiles/Mono.dir/all] Error 2 �cv::Formatter::get(int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, double)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘pangolin::Handler3D::Handler3D(pangolin::OpenGlRenderState&, pangolin::AxisDirection, float, float)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::FileStorage(cv::String const&, int, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::deallocate()’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::read(cv::FileNode const&, cv::String&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::putText(cv::_InputOutputArray const&, cv::String const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::_OutputArray::create(int, int, int, int, bool, int) const’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::namedWindow(cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::operator[](cv::String const&) const’未定义的引用 collect2: error: ld returned 1 exit status CMakeFiles/Mono_Inertial.dir/build.make:234: recipe for target '../Mono_Inertial' failed make[2]: *** [../Mono_Inertial] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Mono_Inertial.dir/all' failed make[1]: *** [CMakeFiles/Mono_Inertial.dir/all] Error 2 /usr/bin/ld: warning: libpangolin.so, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_calib3d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_features2d.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_highgui.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libopencv_core.so.3.4, needed by ../../../../lib/libORB_SLAM3.so, not found (try using -rpath or -rpath-link) ../../../../lib/libORB_SLAM3.so:对‘cv::String::allocate(unsigned long)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::getTextSize(cv::String const&, int, double, int, int*)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::error(int, cv::String const&, char const*, char const*, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::operator<<(cv::FileStorage&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::Formatter::get(int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, double)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘pangolin::Handler3D::Handler3D(pangolin::OpenGlRenderState&, pangolin::AxisDirection, float, float)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::FileStorage(cv::String const&, int, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::String::deallocate()’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::read(cv::FileNode const&, cv::String&, cv::String const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::putText(cv::_InputOutputArray const&, cv::String const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::_OutputArray::create(int, int, int, int, bool, int) const’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::namedWindow(cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::write(cv::FileStorage&, cv::String const&, int)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::imshow(cv::String const&, cv::_InputArray const&)’未定义的引用 ../../../../lib/libORB_SLAM3.so:对‘cv::FileStorage::operator[](cv::String const&) const’未定义的引用 collect2: error: ld returned 1 exit status CMakeFiles/Stereo.dir/build.make:234: recipe for target '../Stereo' failed make[2]: *** [../Stereo] Error 1 CMakeFiles/Makefile2:141: recipe for target 'CMakeFiles/Stereo.dir/all' failed make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2

Is the compilation failure because opencv3.4 is forced? How can I change it to opencv4.4? Looking forward to the author's reply!!!

i3tyc commented 1 year ago

Hello LSGL-LLW, please compile according to the build.sh file instead of build_ros.sh file due to the current lack of ROS support in AdaptSLAM. We also tested it on opencv3.4 and this version also works. To make it work, please modify the OpenCV version specified in the 'CMakeLists.txt' file to:

find_package(OpenCV 3.4.0) if(NOT OpenCV_FOUND) message(FATAL_ERROR "OpenCV > 3.4.0 not found.") endif()