1.undefined reference to pcl::PCLBase undefined reference topcl::KDtreeFlnn undefined reference
修改方法1:
#include “pcl/impl/pcl_base.hpp”
#include “pcl/kdtree/impl/kdtree_flann.hpp” //加上这两句话后错误5、8不再出现
#include “pcl/search/impl/organized.hpp”//加上这句话后错误6、7、9不再出现
#include “pcl/surface/impl/convex_hull.hpp”//加上这句话后其余错误不再出现
修改方法2:
这个报错最头疼的地方在于,明明所有文件都已到齐,然而就是 undefined reference to ‘…’。
经过一番排查,发现问题出在 kdtree_flann.h 中的一小段预编译代码,
#ifdef PCL_NO_PRECOMPILE
#include <pcl/kdtree/impl/kdtree_flann.hpp>
#endif
它的意思是:如果定义了宏,则表示这份代码不进行预编译,那么要添加 kdtree_flann.hpp 。
kdtree_flann.h 声明了 KdTreeFLANN 类,kdtree_flann.hpp 定义了类内的成员实现。
由于我把这部分代码抽离出来单独编译,也即是没有预编译,所以没有添加特定路径下的 kdtree_flann.hpp ,进而出现上述报错。
解决方案:
在 kdtree_flann.h 中添加 #define PCL_NO_PRECOMPILE 。搞定!
2.No rule to make target '/usr/lib/x86_64-linux-gnu/libpcl_kdtree.so
这种一般是没有安装这个库或者链接没好
解决方法:查找有没有安装对应库,如果装了重新连接好
sudo ln -s /usr/lib/libpcl_kdtree.so /usr/lib/x86_64-linux-gnu/libpcl_kdtree.so,
如果没有安装就安装一个。