解决Could NOT find Boost 或 Could NOT find Boost(missing:thread date_time iostreams serialization)的思路

原工作空间的代码好久没运行,再次编译报错如下:

-- Could NOT find Boost
CMake Error at /usr/local/share/pcl-1.11/PCLConfig.cmake:59 (message):
  common is required but boost was not found
Call Stack (most recent call first):
  /usr/local/share/pcl-1.11/PCLConfig.cmake:354 (pcl_report_not_found)
  /usr/local/share/pcl-1.11/PCLConfig.cmake:536 (find_external_library)
  navxxxxxx/CMakeLists.txt:33 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/xxx/example_ws/build/CMakeFiles/CMakeOutput.log".
Makefile:2070: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

第一步,是否没装boost? 经过查看

 dpkg -S /usr/include/boost/version.hpp 

发现boost已装,且版本为libboost1.65-dev:amd64
第二步,PCL库没有链接上boost?卸载重装了PCL-1.11,编译并没有解决问题;
第三步,在某帖子看到说可能cmake版本过低,就从3.10升级到3.24【推测这一步不需要】;
再次编译,发现新报错Could NOT find Boost(missing:thread date_time iostreams serialization),参考boost库依赖报错,获得思路:
第四步,在/usr/local/share/pcl-1.11/PCLConfig.cmake

set(Boost_NO_BOOST_CMAKE ON)
find_package(Boost 1.55.0 ${QUIET_} COMPONENTS system filesystem date_time iostreams serialization)

前面加入set(Boost_DEBUG ON);【推测这一步不需要】
第五步,重新编译,终端显示很多类似如下的代码:

Boost_LIBRARY_DIR_DEBUG =/opt/ros/melodic/lib

说明在路径中/opt/ros/melodic/lib中的boost无法链接thread date_time iostreams serialization,经过依次使用命令

locate libboost_iostreams.so
locate libboost_serialization.so
locate libboost_date_time.so
locate libboost_thread.so

搜索,系统中确实存在libboost_iostreams.so,libboost_serialization.so,libboost_date_time.so,libboost_thread.so,且路径在/usr/lib/x86_64-linux-gnu,那么存在的问题是动态库存在,boost链接不上。
第六步,建立boost与动态库之间的软链接:

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_date_time.a /opt/ros/melodic/lib/libboost_date_time.a
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_iostreams.so /opt/ros/melodic/lib/libboost_iostreams.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_thread.so /opt/ros/melodic/lib/libboost_thread.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_serialization.so /opt/ros/melodic/lib/libboost_serialization.so

再次catkin_make,发现编译成功,但所存在很多警告。后续有问题再来补坑。

猜你喜欢

转载自blog.csdn.net/alien_y/article/details/127670345
今日推荐