ubuntu pcl boost库依赖报错问题

问题产生:最近由于测试相机,装了一堆厂商要求的乱七八糟的库

问题:编译pcl有依赖的库,发现存在boost报错

  Could not find the following Boost libraries:

          boost_iostreams
          boost_serialization

有两个憨憨找不到。

解决方案:1、没安装boost,安装

2、安装了找不到,让它找到。找不到的原因可能是因为路径、也可能是因为版本

===============================================================

具体调试过程:

1、在.cmake文件,打开pcl的boost调试

sudo gedit /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)

在find前面加一句

set(Boost_DEBUG ON)

2、重新编译一下 

-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1507 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH_boost_LIBRARY_SEARCH_DIRS_DEBUG   = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for SYSTEM_LIBRARY_RELEASE: boost_system-gcc7-mt-1_65_1;boost_system-gcc7-mt;boost_system-mt-1_65_1;boost_system-mt;boost_system
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for SYSTEM_LIBRARY_DEBUG: boost_system-gcc7-mt-d-1_65_1;boost_system-gcc7-mt-d;boost_system-mt-d-1_65_1;boost_system-mt-d;boost_system-mt;boost_system
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for FILESYSTEM_LIBRARY_RELEASE: boost_filesystem-gcc7-mt-1_65_1;boost_filesystem-gcc7-mt;boost_filesystem-mt-1_65_1;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for FILESYSTEM_LIBRARY_DEBUG: boost_filesystem-gcc7-mt-d-1_65_1;boost_filesystem-gcc7-mt-d;boost_filesystem-mt-d-1_65_1;boost_filesystem-mt-d;boost_filesystem-mt;boost_filesystem
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for DATE_TIME_LIBRARY_RELEASE: boost_date_time-gcc7-mt-1_65_1;boost_date_time-gcc7-mt;boost_date_time-mt-1_65_1;boost_date_time-mt;boost_date_time
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for DATE_TIME_LIBRARY_DEBUG: boost_date_time-gcc7-mt-d-1_65_1;boost_date_time-gcc7-mt-d;boost_date_time-mt-d-1_65_1;boost_date_time-mt-d;boost_date_time-mt;boost_date_time
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for IOSTREAMS_LIBRARY_RELEASE: boost_iostreams-gcc7-mt-1_65_1;boost_iostreams-gcc7-mt;boost_iostreams-mt-1_65_1;boost_iostreams-mt;boost_iostreams
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for IOSTREAMS_LIBRARY_DEBUG: boost_iostreams-gcc7-mt-d-1_65_1;boost_iostreams-gcc7-mt-d;boost_iostreams-mt-d-1_65_1;boost_iostreams-mt-d;boost_iostreams-mt;boost_iostreams
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for SERIALIZATION_LIBRARY_RELEASE: boost_serialization-gcc7-mt-1_65_1;boost_serialization-gcc7-mt;boost_serialization-mt-1_65_1;boost_serialization-mt;boost_serialization
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for SERIALIZATION_LIBRARY_DEBUG: boost_serialization-gcc7-mt-d-1_65_1;boost_serialization-gcc7-mt-d;boost_serialization-mt-d-1_65_1;boost_serialization-mt-d;boost_serialization-mt;boost_serialization
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1657 ] Searching for REGEX_LIBRARY_RELEASE: boost_regex-gcc7-mt-1_65_1;boost_regex-gcc7-mt;boost_regex-mt-1_65_1;boost_regex-mt;boost_regex
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_RELEASE = /usr/lib _boost_LIBRARY_SEARCH_DIRS_RELEASE = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1708 ] Searching for REGEX_LIBRARY_DEBUG: boost_regex-gcc7-mt-d-1_65_1;boost_regex-gcc7-mt-d;boost_regex-mt-d-1_65_1;boost_regex-mt-d;boost_regex-mt;boost_regex
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:380 ]  Boost_LIBRARY_DIR_DEBUG = /usr/lib _boost_LIBRARY_SEARCH_DIRS_DEBUG = /usr/lib;NO_DEFAULT_PATH;NO_CMAKE_FIND_ROOT_PATH
-- [ /usr/share/cmake-3.10/Modules/FindBoost.cmake:1783 ] Boost_FOUND = 1
-- Could NOT find Boost
Boost version: 1.65.1
Boost include path: /usr/include
Could not find the following Boost libraries:
        boost_iostreams
        boost_serialization
Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of 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:355 (pcl_report_not_found)
  /usr/local/share/pcl-1.11/PCLConfig.cmake:537 (find_external_library)

可以发现pcl找到了部分boost的依赖,仔细观察一下,所有库的搜寻路径是

 Boost_LIBRARY_DIR_DEBUG = /usr/lib

现在可以肯定 usr/lib中没有这两个库

3、对比一下能找到的库和找不到的库

sudo find / -name "libboost_filesystem*" 

sudo find /usr -name "libboost_iostream*" 

a@computer:~$ sudo find /usr -name "libboost_filesystem*" 
[sudo] smz 的密码: 
/usr/lib/libboost_filesystem.so.1
/usr/lib/libboost_filesystem.so.1.72
/usr/lib/libboost_filesystem.so.1.72.0
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/libboost_filesystem.so
/usr/local/cuda-10.2/nsight-systems-2019.5.2/host-linux-x64/libboost_filesystem.so.1.64.0
a@computer:~$ sudo find /usr -name "libboost_iostream*" 
/usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.62.0
/usr/lib/x86_64-linux-gnu/libboost_iostreams.so
/usr/lib/x86_64-linux-gnu/libboost_iostreams.a
/usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.65.1
/usr/local/cuda-10.2/nsight-systems-2019.5.2/host-linux-x64/libboost_iostreams.so.1.64.0

可以非常清晰的看到搜索路径/usr/lib中没有iostream,但是有filesystem。 (也可以清晰地看到我电脑库的版本有问题。。)

4、建立软连接

sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_iostreams.so /usr/lib/libboost_iostreams.so 
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_serialization.so /usr/lib/libboost_serialization.so 

把找不到的两个库从安装路径软连接过去即可。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值