最近几天想在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博客