PCL交叉编译

通过交叉编译工具编译PCL

有一个博主在2013年实现了PCL1.6版本的交叉编译。here

To install PCL on embedded platform, esp on ARM, its few changes in PointCloud2.h and byte_order.h - add DEFINE for LITTLE ENDIAN for arm. This should help you natively compile things on your board

2012年有人给出了关联的解释。here
评论中提到了这是个BigEndianLittleEndian的问题,有人给出了答案。here

To allow compiling with an OMAP processor, one line will have to be changed in each PointCloud2.h and byte_order.h. In PointCloud2.h. The line 14 will change from
#if (defined(__powerpc) || defined(powerpc) || defined(POWERPC) || defined(ppc) || defined(_M_PPC) || defined(__ARCH_PPC))
to
#if (defined(__powerpc) || defined(powerpc) || defined(POWERPC) || defined(ppc) || defined(_M_PPC) || defined(__ARCH_PPC) || defined(arm) || defined(__arm) || defined(ARM) || defined(__ARM))

2012同一个博主在github上提出了编译FLANN的问题(似乎是为了解决PCL依赖),此时他没有解决。here

国内的交叉编译boost的教程。here and 推荐here

  • 关于交叉编译原理及流程的简要梳理:here and here
  • arm-linux-gnueabihf-gcc 与aarch64-linux-gnu-gcc编译器的区别:here
  • arm64 与aarch64现在是同一个东西。here

AArch64 and ARM64 refer to the same thing.

apt-get install安装是从Ubuntu的源下载进行安装,为了控制安装的版本,例如不同编译器,可以从Ubuntu网站上下载。

  • 交叉编译过程中遇到的问题:
$ source enviroment/zyqn201802.sh
$ cd build && cmake ..

运行cmake … 之后报错:

-- Could NOT find Pcap (missing: PCAP_LIBRARIES) 
CMake Error at /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
  Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY)
Call Stack (most recent call first):
  /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-3.18/Modules/FindOpenGL.cmake:427 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/pcl_find_gl.cmake:10 (find_package)
  CMakeLists.txt:456 (include)


-- Configuring incomplete, errors occurred!
See also "/home/cxs/00project/pcl/build/CMakeFiles/CMakeOutput.log".
See also "/home/cxs/00project/pcl/build/CMakeFiles/CMakeError.log".

安装制定版本的Ubuntu的package here

  • 得知packages的名字:freeglut3-dev ,可以搜索查到,可以到Ubuntupackages上找到,很多信息:包的源代码,依赖等及其丰富的信息。
  • 查看该包所有的版本(做法之一)
$ sudo apt-show-versions -a freeglut3-dev 
freeglut3-dev:amd64 2.8.1-2 install ok installed
freeglut3-dev:amd64 2.8.1-2 xenial cn.archive.ubuntu.com
No stable version
freeglut3-dev:amd64/xenial 2.8.1-2 uptodate
freeglut3-dev:i386 2.8.1-2 install ok installed
freeglut3-dev:i386 2.8.1-2 xenial cn.archive.ubuntu.com
No stable version
freeglut3-dev:i386/xenial 2.8.1-2 uptodate
  • 选择想要安装的那个,本例中:freeglut3-dev:i386
$ sudo apt-get install freeglut3-dev:i386
  • 如果有依赖问题
$ sudo apt-get -f install

但是安装完成之后还是有问题,会报错:

-- Could NOT find Pcap (missing: PCAP_LIBRARIES) 
CMake Error at /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
  Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY)
Call Stack (most recent call first):
  /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-3.18/Modules/FindOpenGL.cmake:427 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/pcl_find_gl.cmake:10 (find_package)
  CMakeLists.txt:456 (include)

初步怀疑是find_package()的问题。

是依赖的问题

通过apt-get install直接安装libpcl

  1. 在packages.ubuntu上找到了arm64版本的libpcl查明具体版本,然后在here找到了下载镜像。
    补充说明:在多个网站上可以找到并搜索package文件,解决packages.ubuntu上不能下载的问题.i.e.site1 site2

PPA,表示 Personal Package Archives,也就是个人软件包集。
有很多软件因为种种原因,不能进入官方的 Ubuntu 软件仓库。 为了方便 Ubuntu 用户使用,launchpad.net 提供了 ppa,允许用户建立自己的软件仓库, 自由的上传软件。PPA 也被用来对一些打算进入 Ubuntu 官方仓库的软件,或者某些软件的新版本进行测试。
ppa使用

  1. 安装
sudo dpkg -i xxxx.deb
  1. 在安装过程中提示:
dpkg: error processing archive libpcl-ml1.9_1.9.1+dfsg1-10ubuntu2_arm64.deb (--install):
 package architecture (arm64) does not match system (amd64)
Errors were encountered while processing:
 libpcl-ml1.9_1.9.1+dfsg1-10ubuntu2_arm64.deb

解决办法

$ dpkg --print-architecture
$ dpkg --add-architecture arm64    //添加arm64架构
$ dpkg --print-foreign-architectures
  • 在编译过程中发现大量的依赖需要安装,依赖的依赖也很多,难以解决。
$ sudo dpkg -i libpcl-dev_1.7.2-14build1_arm64.deb 
[sudo] password for cxs: 
(Reading database ... 239714 files and directories currently installed.)
Preparing to unpack libpcl-dev_1.7.2-14build1_arm64.deb ...
Unpacking libpcl-dev:arm64 (1.7.2-14build1) over (1.7.2-14build1) ...
dpkg: dependency problems prevent configuration of libpcl-dev:arm64:
 libpcl-dev:arm64 depends on libboost-all-dev.
 libpcl-dev:arm64 depends on libeigen3-dev.
 libpcl-dev:arm64 depends on libflann-dev.
 libpcl-dev:arm64 depends on libvtk6-dev.
 libpcl-dev:arm64 depends on libqhull-dev.
 libpcl-dev:arm64 depends on libvtk6-qt-dev.
 libpcl-dev:arm64 depends on libopenni-dev.
 libpcl-dev:arm64 depends on libpcl1.7 (= 1.7.2-14build1).

dpkg: error processing package libpcl-dev:arm64 (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 libpcl-dev:arm64

尝试解决问题:直接解压deb文件包,可以得到文件列表中的所有文件。但是不能解决依赖问题

mkdir extract
mkdir extract/DEBIAN
sudo dpkg -X libpcl-devxxx.deb extract/
sudo dpkg -e libpcl-devxxx.deb extract/DEBIAN
  • 发现了新的boost版本here: 交叉编译版的libboost。尚且不清楚这个版本的意义是什么。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值