Ubuntu中安装PCL,以及调用PCL后,程序开多线程发生段错误,或者在编译PCL库与Anaconda的冲突的问题。以及调用Boost内部库访问不到问题。

        最近几天想在ubuntu中跑一个c++的代码,需要调用PCL库,安装了很多次,也踩了比较多的坑,找到了比较好的安装方法,在这里记录一下。

        安装PCL库的时候,我选择的源码编译安装,这样安装可以把所有的东西都放在一个文件夹内部,这样无论在后续安装其他版本或者删除库都会比较方便。

        直接放参考文章,注意PCL下载下来是没有install文件的,需要自己创建文件夹,不然后面的路径会不对。

        (97条消息) PCL库多版本共存问题_同个电脑可以存在两个版本的pcl吗?_LiuLimingCode的博客-CSDN博客        这篇文章质量还是挺高的,按照他的步骤来通常是不会出现问题的。(注意:要在pcl文件中自己创建install库)

        如果在编译pcl库的时候,有

//usr/lib/x86_64-linux-gnu/libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用
//usr/lib/x86_64-linux-gnu/libSM.so.6:对‘uuid_unparse_lower@UUID_1.0’未定义的引用

的问题,在命令行中将anaconda环境退出:conda deactivate,之后删除build,重新编译pcl库就可以了。

        如果调用pcl的Boost库找不到路径,那就得改你的cmakelists文件

set(BOOST_LIBRARYDIR /usr/include)
find_package(Boost REQUIRED COMPONENTS thread)
include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIRS})
add_definitions(-DBOOST_ALL_DYN_LINK)

target_link_libraries(project_name  ${PCL_LIBRARIES} ${Boost_LIBRARIES})

按照这种格式来链接boost文件。

        如果之后你调用std的thread来同时显示两片点云,并且在这个时候发生了段错误,那么就得加入join()函数来协调线程之间的关系。参考:

(97条消息) 【Linux教程】Linux中用C语言多线程编程之pthread_join()函数_pthread_join 多线程_奋斗中的编程菜鸟的博客-CSDN博客

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值