源码编译Moveit时遇mongo相关未定义引用依赖错误求助
解决MoveIt Indigo源码编译中MongoDB相关链接错误
看起来你在编译Indigo版本的MoveIt源码时碰到了MongoDB相关的链接错误,这类问题大多是依赖库版本不匹配或者编译时没正确链接到MongoDB库导致的,我给你几个针对性的解决步骤:
步骤1:安装对应版本的MongoDB依赖包
Indigo版本的MoveIt需要匹配特定的MongoDB依赖,先执行以下命令安装官方推荐的依赖:
sudo apt-get install ros-indigo-mongodb-store libmongodb-dev
步骤2:手动修正MoveIt仓库包的CMake链接配置
有时候catkin构建系统没能自动关联MongoDB库,你可以手动修改moveit_ros_warehouse包的CMakeLists.txt(路径在你的工作空间src/moveit/moveit_ros/warehouse下),添加以下内容:
find_package( MongoDB REQUIRED ) include_directories( ${MONGODB_INCLUDE_DIRS} ) target_link_libraries( moveit_warehouse_broadcast ${MONGODB_LIBRARIES} ) target_link_libraries( moveit_warehouse_import_from_text ${MONGODB_LIBRARIES} ) target_link_libraries( moveit_save_to_warehouse ${MONGODB_LIBRARIES} )
保存后回到工作空间根目录重新执行编译。
步骤3:清理缓存后重新构建
有时候旧的编译缓存会干扰新的构建过程,先彻底清理再重新配置编译:
catkin clean --all cd .. catkin config --extend /opt/ros/indigo --cmake-args -DCMAKE_BUILD_TYPE=Release catkin build
步骤4:强制安装匹配版本的MongoDB库
如果你的系统安装了过高版本的MongoDB(Indigo通常适配2.6.x系列),会出现链接不兼容的问题,可以尝试安装指定版本:
# 仅针对Ubuntu 14.04(Indigo对应的系统版本) echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" | sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get install libmongodb-dev=2.6.10-1ubuntu1
内容的提问来源于stack exchange,提问作者Saurabh Mirani
相关产品推荐
相关产品推荐

