安装QT 5.8.0 、PCL 1.8.0

1.安装QT镜像

1.1 下载安装文件 

1.2 编译 

2 安装点云 

2.1 下载源码

2.2 安装依赖库 

3 安装PCL 1.8.0

4 其他一些库的安装

4.1 安装OpenMesh

4.2 安装aravis-0.5.7

4.3 安装cholmod

5 通常情况下的安装方法

6 出现Killed (Program Cc1plus) 

7 问题集成(Q&A)


0.0用uname -a查看架构

ubuntu@tegra-ubuntu:~$ uname -a

Linux tegra-ubuntu 4.4.38-tegra #1 SMP PREEMPT Thu Jul20 00:41:06 PDT 2017 aarch64 aarch64 aarch64 GNU/Linux

0.1源码文件夹内的cmake可以查看依赖的版本号

1.安装QT镜像

1.1下载安装文件

http://master.qt.io/official_releases/qt/5.8/5.8.0/single/下载:

qt-everywhere-opensource-src-5.8.0.tar.gz(everywhere是编译在不同架构上)

前期准备:可能需要一个大于20G的u盘用来编译源码,讲u盘格式化成ext4用来存源码,这里使用的是5.8.0的qt库。

1.2编译

如果不使用cmake-gui编译,可以用命令行编译

$ cd qt-everywhere-source-5.8.0

#跳过了wayland的编译,因为出的问题太多了

./configure -prefix /usr/local/qt5.8 -opensource-nomake tests-nomake examples –skipwayland

编译并安装

$ make –j4

$ sudo make install

可以看见编译的U盘挂载在/dev/sda1,已经使用了12G的容量

查看U盘空间

具体QT编译问题参考后半部分(Q&A)

2安装点云库

可参考如下

·参考:http://www.pointclouds.org/documentation/tutorials/compiling_pcl_posix.php

·参考:http://blog.csdn.net/linkageworld/article/details/52846555

2.1下载源码

过程->安装QT库->安装VTK的依赖库->安装VTK 8.0->安装PCL1.8的依赖库->安装PCL->完成

VTK 8.0下载source源码https://www.vtk.org/download/

PCL 1.8.0下载source源码https://github.com/PointCloudLibrary/pcl/releases

PS:可能需要重新选择QT5.8.0路径,因为可能默认的是系统版本的QT5.5.1,修改成如下QT5.8.0的路径:


qmake时的路径

PS:PCL依赖库的版本查询可以在pcl源码文件夹的cmake文件夹里面查看


PCL文件夹查看依赖库

2.2安装依赖库

·参考:http://www.cnblogs.com/vanwoos/p/5347673.html

部分依赖库可使用ubuntu自带apt-get命令进行安装(安装前使用sudo

apt-get update和sudo apt-get upgrade更新软件库)

安装flann

$ sudo apt-get install -y libflann-dev

安装boost(默认1.58)

$ sudo apt-get install libboost-all-dev

安装PCAP

$ sudo apt-get install libpcap-dev

安装libusb

$ sudo apt-get install libusb*

安装metslib

可能要去metslib官网下载metslib-0.5.3.tar.gz进行安装

安装Qhull

可下载新版安装https://launchpad.net/ubuntu/+source/qhull

$ sudo apt-get install libqhull-dev

安装VTK(编译1小时,安装半小时)

·参考:http://blog.csdn.net/fanhenghui/article/details/52025846

安装VTK的时候可能会出现找不到UiPlugin_dir(因此要安装QT5.8.0)

找不到Qt5UiPlugin_DIR

安装完成后,可指定Qt5UiPlugin文件夹路径

Qt5UiPlugin路径

3安装PCL 1.8.0

使用Cmake-gui指定source文件夹(PCL文件夹),在pcl文件夹下创建build文件夹(用来配置),点击Grouped打钩,分组显示,然后修改新的Qt5.8.0的cmake文件夹路径


Qmake使用

4其他一些库的安装

4.1安装OpenMesh

用git下载,自己编译安装

$ git clone https://www.graphics.rwth-aachen.de:9000/OpenMesh/OpenMesh.git

可能需要修改Qt5的文件夹路径:

Qt5的文件夹路径

然后make,接着sudo make install编译和安装

4.2安装aravis-0.5.7

看README.md可以知道使用./configure配置,然后是make和sudo

make install进行编译安装

4.3安装cholmod

使用apt-get安装cholmod

$ sudo apt-get install libsuitesparse-dev

头文件路径:/usr/include/suitesparse

5通常情况下的安装方法

首先,参考源码文件夹内的README.md,一般都会有安装方法和需要的依赖库以及版本信息

1.使用sudo apt-get install安装,如sudo apt-get installlibboost-1.58-dev

安装前sudo apt search搜索要安装的库或者软件是否在软件库内,如sudoapt search libboost*

2.若源码文件夹内有configure文件(如图),则可以使用./configure进行配置,接着使用make和sudo

make install进行编译和安装。安装前可以使用./configure –h查看可配置参数(如图)

configure 文件
./configure –h

3.若源码文件夹内有CMakeLists文件,可以使用cmake-gui进行编译,也可以选择用

$ sudo apt-getinstall cmake

来使用命令行对源码编译进行配置,可以创建build文件夹用来放配置之后的文件和将要编译的makefile,有了makefile就可以进行编译和安装了,还是老规矩,使用make和sudo

make install进行编译和安装。

 cmake文件
makefile文件

4.若源码文件夹内只有makefile,可直接使用make和sudo

make install进行编译和安装。

6 出现Killed (Program Cc1plus)

G++: Internal Error: Killed (Program Cc1plus)

原因是内存不足,可以查看自己的存储空间,适当在Lnux下增加临时swap空间(临时交换空间)

第一步:

$ sudo dd if=/dev/zero of=/home/swap bs=1024 count=512000

注释:of=/home/swap,放置swap的空间;

count的大小就是增加的swap空间的大小,1024就是块大小,这里是1K,所以总共空间就是bs*count=512M

已使用内存,SWAP交换内存

第二步:

$ sudo mkswap /home/swap

注释:把刚才空间格式化成格式

第三步:

$ sudo swapon /home/swap

注释:使刚才创建的swap空间

关闭空间:

$ sudo swapoff –a

注释:关闭开辟的swap空间,如果感觉不需要交换空间,可以在/home文件内把swap文件删除

·参考:http://tianshuai.github.io/blog/2013/08/26/g-plus-plus-internal-error-killed-program-cc1plus/

$ sudo dd if=/dev/zero of=/home/swap bs=1024 count=512000

$ sudo mkswap /home/swap & sudo swapon /home/swap

7问题集成(Q&A)

安装QT5的一些问题

Q:出现libxcb这种如下错误时候

libxcb

A:使用命令安装xcb的库

sudo apt-get install libxcb*

遇到找不到xkbcommon头文件的

sudo apt-get install libxkbcommon*

遇到找不到Qt5X11Extras,就安装Qt5X11Extras

sudo apt-get install qt5x11*

可能出现的问题参考下面文章

·参考:http://blog.csdn.net/situzhuge/article/details/5868148

Q:出现和libusb库有关的错误

undefined

A:官网找到libusb1.0.21,需要依赖库libudev

sudo apt-get install libudev*

Q:出现Segmentation fault错误

PS:程序访问的非法的内存,导致其被操作系统强行终止

解释的文章:

·参考:http://blog.chinaunix.net/uid-23069658-id-3959636.html


Segmentation fault错误

If it works with the latest version of pcl,but not with the older version of pcl there is probably a patch which has beenapplied to pcl between those versions which fixes it, I'd suggest lookingthere. You should also dig in with gdb and try to find the actual issue withthe memory causing the segfault.

Edit:

Looking closer, this is just a bug in PCL,there's nothing ROS releated. I removed all the ROS related code and it stillsegfaults.

PS:网上的答案是使用gdb去运行查看问题,发现boost版本和pcl版本可能有冲突,也可能是boost版本和C++11有冲突(-std=c++11)

gdb调试

0x0000007fb0fb167c in boost::math::lanczos::lanczos24m113::lanczos_sum (

z=@0x7fffffede0: 1) at/usr/include/boost/math/special_functions/lanczos.hpp:1069

1069};

A:大体上就是boost库的问题,版本是1.58,暂时未找到解决方法,网上的办法是去掉C++11支持,或者使用其他版本的boost库。

这里说一点:对于相比于JetPack3.1,JetPack3.0我觉得他的内存分配做得不是很好,经常在分配的时候没有释放掉,这也就是我在编译的时候经常ccplus进程被杀死的原因,和运行程序的时候出现“Segmetation

Fault”。

A:程序之所以会时不时的出现“Segmetation Fault”的根本原因是进程访问到了没有访问权限的地方,诸如内核区域或者其0x08048000之前的地方,或者由于要访问的内存没有经MMU进行映射所导致。而这种问题比较多的是出在malloc()之类的动态内存申请函数申请完内存,释放后,没有将指针设置为NULL,而其他地方在继续用先前申请的那块内存时,由于内存管理系统已经将其收回,所以才会出现这样的问题。良好的关于指针的使用习惯是,使用之前先判断其是否为NULL,所有已经归还给操作系统的内存,其访问指针都要及时置为NULL,防止所谓的“野指针”到处飞的情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容