记录一次 Linux (Ubuntu 18)下安装 QT 5.9.1以及 OpenCV 4.1.0

写在前面

本次安装的电脑环境及配置:Win7,64位,专业版。

Linux系统下载的是 Ubuntu 18.04.2 版本。
其官网下载地址: https://ubuntu.com/download/desktop

系统通过虚拟机装在电脑上,用的是 VMware Workstation Pro 12 软件进行配置。
VMware Workstation Pro 12软件程序我就不放链接了,因为我是从同学那边拷贝的,大家没有的自行上网搜索,网上有很多。

因为本人萌新一只,在安装和配置过程中有很多不熟悉的地方,大多数内容皆为本人参考其他大神的总结所尝试与安装,如有错误或者有误导嫌疑的地方还请各位批评指正。

因为美观与方便观看,除了软件的下载连接为网址全部显示的超链接之外,其他所有的超链接皆用“参考网址”四个字作为超链接。

我希望作为一个个人记录用的博客文章,不应该仅仅记录成功的部分,失败的部分也一并记录下来。也作为以后的参考依据与分析。如果你觉得看这些是在浪费时间,你可以直接从第二次安装虚拟机开始。

下面的所有安装与配置顺序基本是我尝试进行安装时间顺序,只是将这些原原本本的记录下来。可能对你来说并非最好的安装与配置顺序。
.

第一次安装虚拟机

关于 Ubuntu 18 的 root 密码,在安装新系统后初次进入 root 时,可以输入命令 sudo passwd 进行修改配置(需用户密码)。参考网址

在虚拟机安装完成后,便可以开始安装 QT,QT 安装的是 QT5.9.1 版本。与电脑安装版本一致,便没有用最新的版本。
其官方下载地址: http://download.qt.io/archive/qt/

因为对Linux还不太熟悉,发现下载下来的文件后缀名为RUN。通过虚拟机的共享文件夹配置,Ubuntu自然是能够找到电脑目录下的QT安装程序。

记录一次 Linux (Ubuntu 18)下安装 QT 5.9.1以及 OpenCV 4.1.0_第1张图片

图1 共享文件夹的配置(第一次用)
.

记录一次 Linux (Ubuntu 18)下安装 QT 5.9.1以及 OpenCV 4.1.0_第2张图片

图2 通过该路径自然也是能够找到共享文件夹

进入文件夹,然后输入

$ ./qt-opensource-linux-x64-5.9.1.run

即可打开安装程序。(不同的qt版本文件名有所不同,格式为./文件名.run)
我这里用的是默认安装
安装完成之后发现新建了一个工程,结果除了pro文件,其他文件在左边的文件目录下皆无法找到,最后发现是QT没有找到GCC与G++编译器。
其可以在QT上方菜单栏 Tools->Options->Build&Run 中可以查看。
其中 Kits 为构建套件, Compilers 为编译器。

后找到一篇博文通过指令:

$ sudo apt-get install build-essential 

进行安装。参考网址

后来QT新建工程能够正常有目录并且找到编译器了,但还是有一些报错,后尝试了下面的指令问题依旧。

$ ./usr/bin/ruby# sudo apt-get install gcc-multilib g++-multilib

后来自行摸索,感觉构建套件不对劲,索性都改成了64位的编译器,可能是64位的QT对32位的编译器不兼容导致,之前一直都是感叹号,在改过之后上面的图标才显示正常。
运行编译,依然是出现了错误,错误有两个。

  1. error: cannot find -lGL
  2. error: collect2: error: ld returned 1 exit status

后通过下面指令自动安装。参考网址

$ sudo apt-get install libgl1-mesa-dev

继续编译,反而爆出了一大堆错误。

经过一番折腾后,决定重装QT。
搜索一下,找到了卸载QT的方法。
通过目录/home/danpe/Qt5.9.1下运行MaintenanceTool文件即可。参考网址
即:

$ ./MaintenanceTool

但后来却找不到共享文件夹的文件内容了,检查了VMware Workstation的设置无问题。

后来我改了系统的语言,改成了中文。参考网址

之后参考了网上两三个方法,想弄共享文件夹都行不通,最后只能直接删了虚拟机重新安装一遍试试。

第二次安装虚拟机

重装之后,顺便将系统语言改为了中文。
再经过上网搜索之后,终于把虚拟机的共享文件搞定了。原来在通过VMware Workstation软件进行共享文件夹操作时,还要对虚拟机内部也要装上VMware Tools。否则只有在刚创建虚拟机的时候才能看到所设置的共享文件夹。参考网址1、参考网址2

但在后面系统重启了之后,发现共享文件夹又挂掉了。
于是我在网上搜索到了这篇,但操作完成之后只能以root权限打开进入看到共享文件夹。参考网址

在系统重启后发现又没有用了???

?????

服了。。。

后通过重新安装VMware Workstation软件临时解决(重启后就又没用了,不知道根本性的解决办法是什么)
具体方法为进入VMware安装包下bin文件后执行vmware-config-tools.pl文件。
指令为:

$ sudo ./vmware-config-tools.pl

然后按Y的按Y,剩下的直接等待就可以完成安装。参考网址

通过共享文件夹传给Ubuntu系统早就下载好的QT安装包和OpenCV源码库以及项目上同事写的一些项目代码作为后面工作学习用。

安装gcc和g++

后面就可以安装gcc和g++,为QT的安装作先前准备,输入指令:

$ sudo apt-get install build-essential

或者

$ sudo apt-get install gcc g++ make -y

两种方法皆可。参考网址1、参考网址2

安装QT

后开始安装QT。
运行RUN文件按步骤点即可。

后来新建一个新项目编译报了两个错误:
找不到 -lGL
ld returned 1 exit status
后来通过搜索,找到解决方案:终端先到/usr/lib/目录下,然后输入指令:

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 /usr/lib/libGL.so

再切回去编译,终于解决问题。参考网址
(其中x86_64-linux-gnu文件夹可能因系统以及安装目录的不同,有所区别,关键是找到libGL.so.1.0.0文件)
至此,QT环境正式搭建完成!

安装OpenCV

接下来安装OpenCV。

我下面所有的安装过程皆是参考的是这个帖子,所以下面内容所有涉及到这个帖子的我不再复述解释:参考网址

具体过程不再详叙,因为里面说的很全也很多,我就不一一照搬了。
但是在安装的时候还是出现了两个意外错误,错误如下:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

在网上搜到两个常规解决手段,一个是通过指令:

$ ps -e|grep apt-get

找到正在运行的apt-get程序,比如显示:

5873 ?      00:00:01 apt-get

然后通过指令:

$ sudo kill 5873

杀死该进程即可。
第二种是通过两个指令强制解锁:

$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock

参考网址
但这两个方法试过都没有用,后来找到了一个解决方法终于解决。
就是通过指令:

$ ps aux

来列出进程,然后我找到了两个_apt的进程,最后通过上面说过的 sudo kill 指令杀死了那两个进程。问题终于解决。参考网址

后来都正常安装,在cmake的时候又遇到了一个问题,问题显示:CMake Error: The source directory does not exist,后来发现是指令的问题。
正确指令:

$ cmake -DCMAKE_BUILD_TYPE=Release ..

注意:-D后面不要留空格,在最后一个单词后面留一个空格,然后两个点
或者:$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 …

其中,在进行到第九项时,即
在配置OpenCV的编译环境时,指令

$ sudo vim /etc/ld.so.conf.d/opencv.conf

会显示:

sudo: vim:找不到命令

则输入命令:

$ sudo apt-get install vim-gtk

即可。
继续安装配置
注意

$ sudo vim /etc/ld.so.conf.d/opencv.conf

这个语句中文件夹 ld.so.conf.d 开头字母是字母里面的小写L,不是数字1,否则会出现能够打开文件(???)但是一直无法保存的错误。

然后进入测试环节,因为我是用的是默认安装路径,所以把需要添加在第十四行的前面的代码改为:

set(OpenCV_DIR /usr/local/lib/cmake/opencv4)

后需要将电脑上的摄像头以USB形式添加到虚拟机中。参考网址

经过测试,能够搜索识别到摄像头,看到摄像头的灯已经亮起,但是显示内容为黑屏,目前不是很清楚具体原因,但 OpenCV4.1.0 是已经完全装好了的。后面编译代码也应该都没有问题了。

最后发现是兼容性问题,在VMware上面菜单栏的虚拟机的设置里面。将USB控制器里面的USB兼容性由USB2.0改成USB3.0,然后再重新设置挂载摄像头,就可以解决能检测到摄像头但是黑屏的问题了。

记录一次 Linux (Ubuntu 18)下安装 QT 5.9.1以及 OpenCV 4.1.0_第3张图片

图3 Hello OpenCV

后来简单又编译了另一个空的工程,引用了几个 OpenCV4 的头文件后开始编译,出现错误:

找不到 -lpulse-mainloop-glib
找不到 -lpulse

后搜索一下找到相应的解决方案,大体就是找到libpulse.so与libpulse-mainloop-glib.so两个文件并复制到/usr/lib/路径下即可。最后也完美解决问题,编译通过。具体可以看参考网址。

除了这个问题之外在打开QT官方Camera例程工程编译又遇到一个错误。

error: GL/gl.h: 没有那个文件或目录

解决方法是输入语句:

$ sudo apt-get install libgl1-mesa-dev

即可正常编译,也正常识别摄像头与打开摄像头画面。参考网址

记录一次 Linux (Ubuntu 18)下安装 QT 5.9.1以及 OpenCV 4.1.0_第4张图片

图4 QT的Camera例程运行

至此在Linux(Ubuntu 18.4.2)下安装QT与OpenCV就完全配置成功了。
下面就可以开始干活了!
.

(完)

你可能感兴趣的:(嵌入式视觉)