最近因为某些原因需要用到pcl库,所以准备着手安装它。
关于安装pcl库的教程网上有很多这里就不再赘述,只说说自己遇到的比较困扰的问题。
我的配置环境:ubuntu16.04 anaconda3 python3.7 pcl1.9.0
我使用的安装方法是从源码对pcl库进行编译,在依赖项全部搞定之后,在pcl1.9.0文件夹下运行
mkdir build
cd build
cmake ..
到这就出问题了,主要问题如下:
CMake Warning at cmake/pcl_targets.cmake:194 (add_library):
Cannot generate a safe runtime search path for target pcl_io because files
in some directories may conflict with libraries in implicit directories:
runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
runtime library [libfreetype.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
runtime library [libexpat.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
runtime library [libxml2.so.2] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
runtime library [libQt5Sql.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
runtime library [libQt5Network.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/filex/anaconda3/lib
Some of these libraries may not be found correctly.
Call Stack (most recent call first):cmake
io/CMakeLists.txt:331 (PCL_ADD_LIBRARY)
出现了很多这样类似的报错。很明显,问题出在找库文件时的路径跑到anaconda那去了,在网上搜了一下解决办法,基本上清一色的是让修改PATH路径,让把PATH中包含anaconda的路径先去除。
具体可以参考https://github.com/pism/pism/issues/356,文中写的很详细了。但可惜这种办法并没有解决我的问题。
后来看到有其他文章是直接把anaconda文件夹中的lib文件夹直接删除,再对pcl进行编译。文章链接我找不到了,也是很不好意思- -。
接下来重新运行
cmake ..
这样就不会出现如上的问题了,于是继续运行
make
本以为可以高枕无忧了,但事情好像没有那么容易,编译到一半又报如下错误:
make[2]: *** No rule to make target '/home/filex/anaconda3/lib/libpng.so', needed by 'lib/libpcl_io.so.1.9.0'. Stop.
CMakeFiles/Makefile2:250: recipe for target 'io/CMakeFiles/pcl_io.dir/all' failed
这意思是又需要anaconda3/lib了?抱着试一试的想法又把anaconda3/lib还原了回来,再次运行make,又报错如下:
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libSM.so: undefined reference to `uuid_unparse_lower@UUID_1.0'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libSM.so: undefined reference to `uuid_generate@UUID_1.0'
网上又查了一圈,最终根据这篇文章找到了解决办法https://blog.csdn.net/u014734886/article/details/93029349。该作者使用的是anaconda2,它删除了anaconda2/lib下的libuuid库文件。于是我找到自己anaconda3目录下的lib,搜索libuuid,找到了5个文件
将他们全部删除,再运行make,在一段漫长的等待后,终于成功编译了!
网友评论