安装rtabmap时报错

在安装rtabma时报错,报错代码如下:
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::VertexSBAPointXYZ::VertexSBAPointXYZ()' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_change_factor'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to octomath::Pose6D::Pose6D(octomath::Pose6D const&)' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_factorize'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_analyze_p' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_analyze'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_amd' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_finish'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_free_factor' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_solve'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_free_dense' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::OptimizableGraph::Edge::clone() const'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::Factory::registerType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, g2o::AbstractHyperGraphElementCreator*)' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_start'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::OptimizableGraph::Vertex::clone() const' collect2: error: ld returned 1 exit status make[2]: *** [tools/ConsoleApp/CMakeFiles/consoleApp.dir/build.make:187:bin/rtabmap-console] 错误 1 make[1]: *** [CMakeFiles/Makefile2:1021:tools/ConsoleApp/CMakeFiles/consoleApp.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务.... /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::VertexSBAPointXYZ::VertexSBAPointXYZ()'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_change_factor' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tooctomath::Pose6D::Pose6D(octomath::Pose6D const&)'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_factorize' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_analyze_p'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_analyze' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_amd'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_finish' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_free_factor'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_solve' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_free_dense'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::OptimizableGraph::Edge::clone() const' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::Factory::registerType(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, g2o::AbstractHyperGraphElementCreator*)'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_start' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::OptimizableGraph::Vertex::clone() const'
collect2: error: ld returned 1 exit status
make[2]: *** [tools/Camera/CMakeFiles/camera.dir/build.make:187:bin/rtabmap-camera] 错误 1
make[1]: *** [CMakeFiles/Makefile2:1105:tools/Camera/CMakeFiles/camera.dir/all] 错误 2
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::VertexSBAPointXYZ::VertexSBAPointXYZ()' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_change_factor'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to octomath::Pose6D::Pose6D(octomath::Pose6D const&)' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_factorize'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_analyze_p' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_analyze'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_amd' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_finish'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_free_factor' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_solve'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_free_dense' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::OptimizableGraph::Edge::clone() const'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::Factory::registerType(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, g2o::AbstractHyperGraphElementCreator*)' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_start'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::OptimizableGraph::Vertex::clone() const' collect2: error: ld returned 1 exit status make[2]: *** [tools/StereoEval/CMakeFiles/stereoEval.dir/build.make:187:bin/rtabmap-stereoEval] 错误 1 make[1]: *** [CMakeFiles/Makefile2:1133:tools/StereoEval/CMakeFiles/stereoEval.dir/all] 错误 2 /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::VertexSBAPointXYZ::VertexSBAPointXYZ()'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_change_factor' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tooctomath::Pose6D::Pose6D(octomath::Pose6D const&)'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_factorize' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_analyze_p'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_analyze' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_amd'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_finish' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_free_factor'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_solve' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tocholmod_free_dense'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::OptimizableGraph::Edge::clone() const' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::Factory::registerType(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, g2o::AbstractHyperGraphElementCreator*)'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_start' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference tog2o::OptimizableGraph::Vertex::clone() const'
collect2: error: ld returned 1 exit status
make[2]: *** [tools/ExtractObject/CMakeFiles/extractObject.dir/build.make:187:bin/rtabmap-extractObject] 错误 1
make[1]: *** [CMakeFiles/Makefile2:1077:tools/ExtractObject/CMakeFiles/extractObject.dir/all] 错误 2
make: *** [Makefile:152:all] 错误 2

/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to g2o::VertexSBAPointXYZ::VertexSBAPointXYZ()' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_change_factor'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to octomath::Pose6D::Pose6D(octomath::Pose6D const&)' /usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_factorize'
/usr/bin/ld: ../../bin/librtabmap_core.so.0.21.1: undefined reference to cholmod_analyze_p' /usr/bin/ld:

缺少很多依赖环境,根据对应的提示信息,百度找下对应解决方案即可。


$ cd ~
$ git clone https://github.com/introlab/rtabmap.git rtabmap
$ cd rtabmap/build
$ cmake -DCMAKE_INSTALL_PREFIX=~/catkin_ws/devel ..
$ make -j4
$ make install

这个错误可能是由于依赖库没有正确链接导致的。建议先检查一下是否已经正确安装了所需的依赖库,比如g2o和cholmod。如果已经安装了依赖库,可以尝试在安装rtabmap时添加链接参数,例如在CMakeLists.txt文件中添加以下内容:

set(CMAKE_EXE_LINKER_FLAGS "-L/path/to/lib -lg2o -lcholmod")

其中,/path/to/lib是g2o和cholmod库的安装路径。

安装RTABMAP_ROS包
参考这个,按照步骤来


https://www.freesion.com/article/5913961174/

这个错误代码表明在编译或链接rtabmap时出现了某些库文件的缺失或链接错误。根据错误信息,可以看出问题可能与g2o、octomath和cholmod等库文件有关。
解决这个问题的方法是:
确保已正确安装g2o、octomath和cholmod等库文件。
检查库文件的搜索路径是否正确。
检查链接顺序是否正确。

根据提示信息,把缺少的依赖项安装好

根据错误信息来看,是缺少依赖库

基于bing、GPT部分内容和本人思考总结:
在安装rtabmap时可能会遇到以下一些常见的问题:

缺少依赖项:rtabmap可能需要一些额外的依赖项才能正常安装和运行。请确保安装了所需的依赖项,并且版本与rtabmap要求的兼容。

编译错误:如果你是通过源代码编译方式来安装rtabmap,请检查编译过程中是否有任何错误或警告信息。这些信息可以帮助你找到问题所在。

系统环境不兼容:rtabmap可能对操作系统或其他软件有特定的版本要求。请确保你的系统环境满足rtabmap的要求。

安装路径权限问题:尝试将rtabmap安装到受限制的目录可能导致权限错误。请确保你有足够的权限来安装软件。

该错误表明链接器在编译时找不到某些符号的定义。这通常是由于缺少依赖库或编译器参数不正确导致的。针对这个问题,你可以尝试以下几个解决方法:

确保依赖库正确:首先,检查是否正确安装了所有必需的依赖库,并且路径正确设置。特别是对于g2o和cholmod这两个库,确认它们已经正确安装,并且库文件路径正确添加到链接器配置中。

检查编译器参数:确保编译器参数正确设置。你可以检查CMakeLists.txt文件或者Makefile中的编译器参数设置,确认是否有漏掉的参数或者错误的参数设置。

确保依赖库版本兼容性:如果使用了不同版本的依赖库,可能会导致符号不匹配的问题。确保所使用的依赖库版本与代码兼容。

清除旧的编译结果:有时候旧的编译结果可能会影响新的编译,尝试删除之前生成的临时文件和目标文件,然后重新编译。

检查系统环境变量:有时候系统环境变量可能影响编译链接,检查是否有不必要的环境变量干扰编译。

重新下载源码:如果以上方法都没有解决问题,尝试重新下载项目的源码,确保代码没有损坏或者丢失。