ubuntu从源码编译pcl与使用checkinstall打包安装

编译PCL

1.默认已安装的一些命令工具

——如:git(用于从github上下载源码),cmake(c++项目构建),cmake-gui(cmake的一个图形界面)

2.安装依赖项

sudo apt update
sudo apt install build-essential linux-libc-dev
sudo apt install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt install mpi-default-dev openmpi-bin openmpi-common  
sudo apt install libflann-dev
sudo apt install libeigen3-dev
# sudo apt install libboost-all-dev
# sudo apt install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
 sudo apt install libqhull* libgtest-dev
 sudo apt install freeglut3-dev pkg-config
 sudo apt install libxmu-dev libxi-dev 
 sudo apt install mono-complete
 sudo apt install openjdk-8-jdk openjdk-8-jre

以上依赖项安装参考这篇博客,但是注意到我这里注释掉了libboost-all-dev的安装,因为我的机器上安装boost库失败,所以我是直接从官网下载源码然后编译安装的,参考以下;我也没有安装成qt与vtk,这两个我也是从源码编译安装。

3.源码下载与编译

我编译的是pcl1.10版本,其中需要由源码编译安装的在下面提供了下载,直接可安装的提供了安装指令(其中最低版本指的是pcl1.10.0版本的CMakeLists.txt中指定的各个依赖库的最低版本):

库名最低版本百度云下载官网下载安装指令
Eigen3.1不需要不需要sudo apt install libeigen3-dev
FLANN1.7.0不需要不需要sudo apt install libflann-dev
qhull无版本要求不需要不需要sudo apt install libqhull*
boost未知boost1.6.5,提取码:ugb4官网下载-
Qt5Qt 5.10.1版本,提取码:zerh;或所有历史版本下载官网下载-
VTK6.2VTK源码7.1.1,提取码:gaje官网下载-
PCL1.10.0pcl_1.10.0源码,提取码:8hbu官网下载-

3.1.boost库安装

解压安装包后进入解压后目录
执行`./bootstrap.sh`进行准备工作
执行`./b2`进行编译
执行`sudo ./b2 install`安装编译好的boost库

3.2.qt5库安装

安装时直接运行下载的.run文件即可,注意直接运行是安装在主目录下新建的一个Qt安装目录,如果是sudo ./qt-opensource-linux-x64-5.10.1.run,则会安装在/opt下的新建的Qt安装目录下。运行.run文件出现安装向导,全选所有组件即可(也可只选择自己需要的部分)。
在这里插入图片描述
在这里插入图片描述

3.3.vtk库编译

以下步骤是编译8.2.0版本的:但是因为编译成的8.2.0版本vtk在之后编译pcl1.10总是出问题,貌似是8.2.0不向前兼容,部分旧的用法不支持了。所以重新编译7.1.1版本,步骤应该大同小异。

解压后,使用cmake图形界面配置生成VTK项目,首先指定源码路径与生成路径。将Advance选项勾选上然后点击configure,生成器使用Unix Makefiles,使用本地编译器。
在这里插入图片描述
=>第一次configure之后,确认BUILD_SHARED_LIBS勾上,这样编译的是共享库而不是静态库;
在这里插入图片描述
=>确认CMAKE_BUILD_TYPE为release版本,因为我电脑上安装的其他第三方库都是release版(编译debug版得到的库可用于调试,release版的无法调试;如果想要编译debug版也可以,但是链接到其他依赖的第三方库的时候使用的也得是第三方库的debug版,这个设置起来可能还比较麻烦);
在这里插入图片描述
=>确定选上VTK_GROUP_ENABLE_QT,这样可以在Qt中使用VTK
在这里插入图片描述
=>此外,在编译7.1.1的时候还有一个VTK_RENDERING_BACKEND可选,选择OpenGL不要选OpenGL2

关于BUILD_TESTING:我编译VTK的时候出了好几次错,30%几,40%几,50%几编译出错终止了,我猜测可能与BUILD_TESTING有关,因为根据这篇博客,如果BUILD_TESTING的话,需要下载vtkdata数据,而如果网络不好,下载超时则会导致后续编译的出错。所以我把这个选项关了,不编译测试代码。
=>点击configure继续。上一步VTK_GROUP_ENABLE_QT选了,这一步可能需要配置Qt的路径,根据这篇博客地址要精确到Qt5Config.cmake所在文件夹
在这里插入图片描述
=>然后configure之后需要进一步确认更多的Qt路径,基本上都是对的,直接cofigure
在这里插入图片描述
如果出现以下错误,可以直接忽略该错误。
在这里插入图片描述
=>configure到没有标红选项后,generate生成项目。
=>生成完毕后进入构建目录,执行make -j8(使用8线程编译当前生成项目),即完成编译。之后是安装VTK库,参考下一节。安装完了VTK库然后编译pcl库。

3.4.pcl库编译

  1. 通过cmake-gui配置生成项目。步骤与vtk差不多,需要指定一些库的目录。因为非常多的目录需要指定,而我具体也不是非常清楚哪些必须哪些非必须,所以我只指定了以下目录(需要指定相应库的cmake配置目录,一般该目录下有库名.cmake类似这样的名称):
    • flann_DIR:/usr/lib
    • OPENNI_INCLUDE_DIR:/usr/include/ni
    • OPENNI_LIBRARY:/usr/lib/libOpenNI.so
    • OPENNI2_INCLUDE_DIR:/usr/include/openni2
    • OPENNI2_LIBRARY:/usr/lib/libOpenNI2.so
    • Qt5_DIR:与编译VTK时一样

其他的保持默认的。configure之后提示vtkComonCore之类组件的变成了CommonCore
==========>使用vtk7.1.1版本后没有再提示这个错误

  1. 编译sudo make -j12

使用checkinstall打包安装源码编译生成的库

使用checkinstall安装从源码编译的库,可以方便库的管理以及使得以后库的卸载变得简单。checkinstall使用方法也很简单,比如安装VTK库(现已改为编译安装VTK7.1.1版本):

  1. 在上面vtk构建目录下编译完了之后执行sudo checkinstall,安装编译好的库并打包
  2. checkinstall执行过程中可能会提示设置一些关于该软件包的信息,对于大部分的选择题,直接enter就可以,对于以下填空题,按照打包的库的信息进行填写,比如该打包软件的名称、说明、版本号、以及依赖项(Requires)等一般需要填写。
    在这里插入图片描述
  3. 执行完毕后该软件就被安装到了系统上,且在当前目录下会生成一个.deb的软件安装包,下次再要安装或者需要给别人安装只需要sudo apt install ./this_deb_file.deb
    一点问题:非常奇怪的是我这里编译打包的是vtk8.2.0版本,但是在头文件目录与库目录里都是8.9,不知道为什么
    在这里插入图片描述
  4. 打包pcl库也是一样,更改软件包名称、说明、版本号以及填写如下依赖项(根据之前安装步骤里手动安装的依赖项来定):

build-essential,linux-libc-dev,libusb-1.0-0-dev,libusb-dev,libudev-dev,mpi-default-dev,openmpi-bin,openmpi-common,libflann-dev,libeigen3-dev,libqhull*,libgtest-dev,freeglut3-dev,pkg-config,libxmu-dev,libxi-dev,mono-complete,openjdk-8-jdk,openjdk-8-jre,libopenni-dev,libopenni2-dev

如果想要更改打包好的deb包信息,可以使用dpkg命令,参考

Qt Creator配置与测试pcl库

  • 配置
    新建PCL.pri文件,写入如下内容:
//添加头文件路径
INCLUDEPATH += /usr/include/eigen3		//Eigen
INCLUDEPATH += /usr/local/include		//boost
INCLUDEPATH += /usr/local/include/vtk-7.1       //vtk
//INCLUDEPATH += /usr/include			//flann,this path should not be added,lest it cause error
INCLUDEPATH += /usr/local/include/pcl-1.10
//添加需要链接的库
LIBS += /usr/lib/x86_64-linux-gnu/libflann*.so
LIBS += /usr/local/lib/libboost_*.so
LIBS += /usr/local/lib/libvtk*.so
LIBS += /usr/local/lib/libpcl_*.so

然后在每一个使用PCL库的项目下添加该文件,并在.pro文件中include(PCL.pri)即可。
在Ubuntu上使用PCL库貌似要比我之前尝试的在windows下智能提示要灵活点,不那么卡,但也有一点点卡。

  • 测试:代码略
  • 另外一点有意思的是,在ubuntu下的Qt Creator中竟然可以使用QVTKWidget。这玩意我在windows下怎么也配置不成,在ubuntu里一下就OK了,这个之后补个博客
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值