----------------------------------------------------------------------------------------------------------------------------
开发板 :NanoPC-T6
开发板
eMMC
:256GB
LPDDR4
:16GB
显示屏 :15.6
英寸HDMI
接口显示屏
u-boot
:2017.09
linux
:6.1
----------------------------------------------------------------------------------------------------------------------------
本节的目的目的就是很简单,就是基于Qt
实现HDMI-IN
输入视频的实时监控。主要利用的技术包括:Qt
、opencv
、v4l2
。
我们在《移植QT5.
6到mini2440
》中介绍了交叉编译安装Qt
,当时使用的版本是qt-everywhere-opensource-src-5.6.0.tar.xz
,其支持ARMv4t
架构,我们是直接将Qt
安装到ubuntu
宿主机的。
本节我们将介绍适用于Armv8-a
架构的Qt
和opencv
的安装了,当然这一节我们安装并不打算通过编译源码的方式将其安装到ubuntu
宿主机,至于原因嘛,有多个方面:
- 编译
Qt
需要占用很大的物理磁盘,而我的虚拟机中的ubuntu
宿主机磁盘空间已经不足; - 编译安装可能遇到各种问题,最初我尝试了安装
qt-everywhere-src-5.12.0.tar.xz
,编译时遇到了各种错误(大概率是我交叉编译环境和gcc
版本的问题),因此不得不放弃编译安装的想法。
本节我们直接使用apt-get
或者aptitude
将Qt
和opencv
安装到NanoPC-T6
开发板的debain
系统中。
一、Qt
安装及配置
1.1 安装Qt
1.1.1 命令安装
首先先将debian
的软件更新:
pi@NanoPC-T6:/$ sudo aptitude update
首先查看一下有没有安装Qt
:
pi@NanoPC-T6:/$ sudo apt list --installed | grep qtcreator
如果未安装,那么安装Qt
,这里安装的版本为Qt5.x
,默认安装的是该大版本下的最新版本:
pi@NanoPC-T6:/$ sudo aptitude install build-essential
pi@NanoPC-T6:/$ sudo aptitude install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
pi@NanoPC-T6:/$ sudo aptitude install qtcreator
pi@NanoPC-T6:/$ sudo aptitude install "~n^qt5"
1.1.2 安装目录
Qt
默认是安装到/usr/lib/aarch64-linux-gnu/qt5
目录,这里安装的版本为Qt 5.15.10
;
pi@NanoPC-T6:/$ ls -l /usr/lib/aarch64-linux-gnu/qt5
drwxr-xr-x 2 root root 4096 12月 12 22:37 bin
drwxr-xr-x 1 root root 4096 12月 12 22:37 examples
drwxr-xr-x 2 root root 4096 12月 12 22:37 libexec
drwxr-xr-x 76 root root 4096 12月 12 21:26 mkspecs
drwxr-xr-x 1 root root 4096 12月 12 22:37 plugins
drwxr-xr-x 1 root root 4096 12月 12 22:37 qml
-rw-r--r-- 1 root root 562 11月 13 16:21 qt.conf
pi@NanoPC-T6:/$ ls -l /usr/lib/aarch64-linux-gnu/qt5/bin/
lrwxrwxrwx 1 root root 26 9月 18 03:19 assistant -> ../../../qt5/bin/assistant
lrwxrwxrwx 1 root root 33 11月 13 16:21 fixqt4headers.pl -> ../../../qt5/bin/fixqt4headers.pl
lrwxrwxrwx 1 root root 20 11月 13 16:21 moc -> ../../../qt5/bin/moc
lrwxrwxrwx 1 root root 29 11月 13 16:21 qdbuscpp2xml -> ../../../qt5/bin/qdbuscpp2xml
lrwxrwxrwx 1 root root 29 11月 13 16:21 qdbusxml2cpp -> ../../../qt5/bin/qdbusxml2cpp
lrwxrwxrwx 1 root root 22 11月 13 16:21 qlalr -> ../../../qt5/bin/qlalr
lrwxrwxrwx 1 root root 39 11月 13 16:21 qmake -> ../../../../bin/aarch64-linux-gnu-qmake
lrwxrwxrwx 1 root root 20 11月 13 16:21 rcc -> ../../../qt5/bin/rcc
lrwxrwxrwx 1 root root 26 11月 13 16:21 syncqt.pl -> ../../../qt5/bin/syncqt.pl
lrwxrwxrwx 1 root root 20 11月 13 16:21 uic -> ../../../qt5/bin/uic
pi@NanoPC-T6:/$ qmake -v
QMake version 3.1
Using Qt version 5.15.10 in /usr/lib/aarch64-linux-gnu
同时在路径/usr/lib/aarch64-linux-gnu/
下有qt5
的安装库;
pi@NanoPC-T6:/$ ls -l usr/lib/aarch64-linux-gnu | grep Qt5
-rw-r--r-- 1 root root 965 11月 13 16:21 libQt5Concurrent.prl
lrwxrwxrwx 1 root root 27 11月 13 16:21 libQt5Concurrent.so -> libQt5Concurrent.so.5.15.10
lrwxrwxrwx 1 root root 27 11月 13 16:21 libQt5Concurrent.so.5 -> libQt5Concurrent.so.5.15.10
lrwxrwxrwx 1 root root 27 11月 13 16:21 libQt5Concurrent.so.5.15 -> libQt5Concurrent.so.5.15.10
-rw-r--r-- 1 root root 68040 11月 13 16:21 libQt5Concurrent.so.5.15.10
-rw-r--r-- 1 root root 975 11月 13 16:21 libQt5Core.prl
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5Core.so -> libQt5Core.so.5.15.10
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5Core.so.5 -> libQt5Core.so.5.15.10
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5Core.so.5.15 -> libQt5Core.so.5.15.10
-rw-r--r-- 1 root root 5928376 11月 13 16:21 libQt5Core.so.5.15.10
-rw-r--r-- 1 root root 946 11月 13 16:21 libQt5DBus.prl
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5DBus.so -> libQt5DBus.so.5.15.10
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5DBus.so.5 -> libQt5DBus.so.5.15.10
lrwxrwxrwx 1 root root 21 11月 13 16:21 libQt5DBus.so.5.15 -> libQt5DBus.so.5.15.10
-rw-r--r-- 1 root root 662664 11月 13 16:21 libQt5DBus.so.5.15.10
.....
1.2 配置
安装完成后,我们进入debian
桌面系统,可以看到Qt Creater
;如果是以root
用户登录的话,可以直接双击图标,启动程序;
否则开启一个终端,使用如下命令启动Qt Creater
;
pi@NanoPC-T6:/$ sudo qtcreator
点击【Tools
】-【External
】- 【Configure
】,进入配置页面。
1.2.1 编译器
点击左侧【Kits
】,选择【Compilers
】,这里已经检测到系统安装的C、C++
编译器;当然如果有需求的话,也可以自己添加编译器,指定名称和编译器路径即可:
以C
编译器为例,这里检测到了/usr/bin/aarch64-linux-gnu-gcc
、和/usr/bin/aarch64-linux-gnu-gcc-12
;
pi@NanoPC-T6:/$ /usr/bin/aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=/usr/bin/aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/13/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 13.2.0-8' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-offload-targets=nvptx-none=/build/reproducible-path/gcc-13-13.2.0/debian/tmp-nvptx/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.0 (Debian 13.2.0-8)
pi@NanoPC-T6:/$ /usr/bin/aarch64-linux-gnu-gcc-12 -v
Using built-in specs.
COLLECT_GCC=/usr/bin/aarch64-linux-gnu-gcc-12
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 12.3.0-12' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.3.0 (Debian 12.3.0-12)
可以看到系统中安装了gcc 13.2.0
版本和gcc 12.3.0
版本。如果不想使用某个版本,直接移除即可。
1.2.2 Qt Vsersions
点击左侧【Kits
】,选择【Qt Vsersions
】,可以手动设置qmake
路径,这里默认值为/usr/lib/qt5/bin/qmake
;
这里我们查看一下/usr/lib/qt5
目录:
pi@NanoPC-T6:/$ ls -l /usr/lib/qt5
总用量 4
drwxr-xr-x 2 root root 4096 12月 12 22:37 bin
pi@NanoPC-T6:/$ ls -l /usr/lib/qt5/bin/
总用量 7728
-rwxr-xr-x 1 root root 995872 9月 18 03:19 assistant
-rwxr-xr-x 1 root root 6340 11月 13 16:21 fixqt4headers.pl
-rwxr-xr-x 1 root root 986248 11月 13 16:21 moc
-rwxr-xr-x 1 root root 331544 11月 13 16:21 qdbuscpp2xml
-rwxr-xr-x 1 root root 134240 11月 13 16:21 qdbusxml2cpp
-rwxr-xr-x 1 root root 134064 11月 13 16:21 qlalr
-rwxr-xr-x 1 root root 2954616 11月 13 16:21 qmake
-rwxr-xr-x 1 root root 68208 11月 13 16:21 qvkgen
-rwxr-xr-x 1 root root 920672 11月 13 16:21 rcc
-rwxr-xr-x 1 root root 48360 11月 13 16:21 syncqt.pl
-rwxr-xr-x 1 root root 658456 11月 13 16:21 tracegen
-rwxr-xr-x 1 root root 659376 11月 13 16:21 uic
1.2.3 定义构建套件
点击左侧【Kits
】,选择【Kits
】,添加套件:
如有调试需求,可以自行安装GDB
调试器。
1.3 测试
1.3.1 示例教程
我们直接选择一个示例教程,如图所示:
选中项目Audio Devices Example
:
选中左侧【Build
& Run
】- 【RK3588
】,然后点击左下角【Run
】按钮;
测试发现示例教程无法运行,并且代码出现若干红线,具体原因尚不清楚;
1.3.2 创建测试项目
点击【File
】-【New Project
】;
选中【Application(Qt)
】- 【Qt Widgets Application
】;
指定项目名称以及保存路径,然后点击【Next
】,一直点击【Next
】;
接着我们运行项目,点击左下角的【Run
】,运行结果如下;
二、安装opencv
参考文章
[2] Linux Ubuntu
搭建Qt RK3399
编译 运行 调试环境
[4] linux GUI
-移植QT5.6
到mini2440