PCL1.8与boost1.58的依赖问题----------Ubuntu16.04重装PCL1.8笔记

给一台电脑重新装了个系统配置了个环境,遇到些问题,搞了半天。

pcl issue有人提交也没有个解决办法。晚上搞了下解决了问题。


(1)问题描述:

../lib/libpcl_recognition.so.1.8.1: undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::string&)'
collect2: error: ld returned 1 exit status
tools/CMakeFiles/pcl_train_linemod_template.dir/build.make:147: recipe for target 'bin/pcl_train_linemod_template' failed
make[2]: *** [bin/pcl_train_linemod_template] Error 1


(2)原因分析(走过的坑,可略过):

按照提示是boost的问题,很简单就是为cmakelist设置boost路径:

set(Boost_LIBRARY_DIR /usr/lib/x86_64-linux-gnu/)

然而并没有解决问题,后来换了多个pcl版本,均编译失败。也是同样问题。


(3)解决办法:

后来想到pcl依赖的各种库版本有要求,于是升级boost1.58到boost1.60解决了问题。另外台电脑(Ubuntu16.04+boost1.58)却能编译通过。应该是PCL更新的缘故。


(4)升级boost方法

我们采用源码编译的方式,ubuntu的源也更不到更新的boost。

1删除boost1.58

libboost1.58-all-dev

2下载boost1.60源码

https://sourceforge.net/projects/boost/files/boost-binaries/1.60.0/

3解压源码并进入目录

4查看需要单独编译模块

./bootstrap.sh --show-libraries

5选择编译模块

./bootstrap.sh --with-libraries= atomic,chrono,container,context,coroutine,coroutine2,date_time,exception,filesystem,graph,graph_parallel,iostreams,locale,with-log,math,metaparse,mpi,program_options,python,random,regex,serialization,signals,system,test,thread,timer,type_erasure,wave

6编译

sudo ./b2

7复制头文件

sudo cp -a stage/lib /usr
sudo cp -a boost /usr/include

boost升级部分参考

1

2


你可能感兴趣的:(Boost)