Ubuntu pcl安装

/usr/bin/ld: CMakeFiles/pcl_vtk2pcd.dir/vtk2pcd.cpp.o: undefined reference to symbol '_ZN18vtkPolyDataNormals3NewEv'
/usr/bin/ld: /usr/local/lib/libvtkFiltersCore-8.2.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [tools/CMakeFiles/pcl_vtk2pcd.dir/build.make:110:bin/pcl_vtk2pcd] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2870:tools/CMakeFiles/pcl_vtk2pcd.dir/all] 错误 2
make: *** [Makefile:152:all] 错误 2
遇到错误,求大家帮忙解决

img

保错截图我看看

最近几天想在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()函数来协调线程之间的关系。参考: