oost在ros中的环境配置问题

文章描述了在ROS环境中配置Boost库时遇到的编译问题。用户在.bashrc中设置了Boost的路径,但cmake编译时仍提示找不到所需的Boost组件。解决方案是修改CMakeLists.txt以开启调试模式,查找问题出在哪里。发现问题是系统默认的ROS库路径中包含的Boost版本不匹配。通过删除ROS库中的Boost库文件,使系统找到正确安装的Boost库,从而解决了编译问题。
摘要由CSDN通过智能技术生成

boost在ros中的环境配置问题,提示 Could NOT find Boost (missing: system filesystem program_options regex


(found suitable version “1.65.1”, minimum required is “1.40.0”))

前情提示:
记得在~/.bashrc中配置好boost的环境位置:

export BOOST_INCLUDE=
export Boost_LIBRARY_DIRS=

出现的问题:
在cmakelist中加入find_package(Boost_COMPONENTS_)时,使用catkin_make进行编译,终端提示

CMake Error at /home/cita/software/cmake-3.25.0-linux-x86_64/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Boost (missing: system filesystem program_options regex)
  (found suitable version "1.65.1", minimum required is "1.40.0")

解决方案:
首先,在cmakelists.txt中加入如下代码,使得cmakelist进入调试模式,然后删除devel和build,重新使用catkin_make进行编译,终端提示

set(Boost_DEBUG 1)

set(Boost_USE_STATIC_LIBS OFF) 
set(Boost_USE_MULTITHREADED ON)  
set(Boost_USE_STATIC_RUNTIME OFF) 
find_package(Boost COMPONENTS) 

if(Boost_FOUND)
  MESSAGE("Boost_FOUND")
  MESSAGE(WARNING "Boost_INCLUDE_DIRS is ${Boost_INCLUDE_DIRS}")
  MESSAGE(WARNING "Boost_LIBRARIES is ${Boost_LIBRARY_DIRS}")
  MESSAGE(WARNING "Boost_LIBRARIES is ${Boost_LIBRARIES}")
endif()
if(NOT Boost_FOUND)
    message("NOT found Boost")
endif()

检查终端数据语句中和boost相关的如下语句

-- [ /home/cita/software/cmake-3.25.0-linux-x86_64/share/cmake-3.25/Modules/FindBoost.cmake:807 ] Boost_LIBRARY_DIR_DEBUG = "/opt/ros/melodic/lib"

查看Boost_LIBRARY_DIR_DEBUG后面跟的地址,如果是/opt/ros/melodic/lib,就会出错,接下来可以

cd opt/ros/melodic/lib
sudo rm libboost_*

这样就可以把opt/ros/melodic/lib中关于boost的链接库删了,重新编译就会变为如下,其中“/usr/local/lib”显示的是你自己的boost的安装位置,就可以编译成功了

-- [ /home/cita/software/cmake-3.25.0-linux-x86_64/share/cmake-3.25/Modules/FindBoost.cmake:807 ] Boost_LIBRARY_DIR_DEBUG = "/usr/local/lib"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值