ubuntu20.04搭建QGC4.2编译环境

前言

Ubuntu20.04
QGC 4.2
ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。

一、安装qt

推荐使用在线安装,下载地址:https://download.qt.io/official_releases/online_installers/

我这里下载的是qt-unified-linux-x64-4.4.1-online.run

下载后添加可执行权限并双击运行,如果双击打不开这个软件,在该软件所在目录打开终端执行

./qt-unified-linux-x64-4.4.1-online.run 

出现下面的报错:

./qt-unified-linux-x64-4.4.1-online.run: error while loading shared
libraries: libxcb-xinerama.so.0: cannot open shared object file: No
such file or directory

执行下面的命令解决:

sudo apt install --reinstall libxcb-xinerama0

执行完之后就可以打开安装程序,然后一直下一步。直到下面这页面,选择需要安装的qt版本,然后一直下一步安装,注意勾选LTS和Arhive,否则编译QGC时可能会报错

请添加图片描述
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7
at org.codehaus.groovy.vmplugin.VMPluginFactory.(VMPluginFactory.java:43)
at org.codehaus.groovy.reflection.GroovyClassValueFactory.(GroovyClassValueFactory.java:35)

二、编译QGC

安装依赖

sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev patchelf

安装GStreamer

GStreamer是视频相关的组件,如果不装的话虽然不影响编译,但编译出来的安卓版地面站会无法显示视频流图像,如下:

在这里插入图片描述
参考下面网址安装:
https://github.com/mavlink/qgroundcontrol/blob/master/src/VideoReceiver/README.md
编译ubuntu地面站需要用下面命令安装

list=$(apt-cache --names-only search ^gstreamer1.0-* | awk '{ print $1 }' | sed -e /-doc/d | grep -v gstreamer1.0-hybris)
sudo apt-get install $list
sudo apt-get install libgstreamer-plugins-base1.0-dev
sudo apt-get install libgstreamer-plugins-bad1.0-dev 

编译安卓地面站需要下载gstreamer-1.0-android-universal-1.18.5.tar.xz
下载地址:
链接: https://pan.baidu.com/s/1DGqsdTKbFFl-erZZjzPHHQ 提取码: 3vsx
–来自百度网盘超级会员v5的分享

下载后在qgroundcontrol目录下解压,解压后清除重新编译地面站(不清除重新编译可能会报错)后即可编译出可以显示视频的安卓QGC:在这里插入图片描述
如果用qt5.15.2编译qgc4.2.0时出现下面的报错
在这里插入图片描述
在这里插入图片描述
下载下面的压缩包并解压
链接: https://pan.baidu.com/s/1kFlph1IKEG8aqF4dqUrBSg 提取码: sq00
–来自百度网盘超级会员v5的分享
将下面目录的中内容删除,并用压缩包里面的内容替换,然后重新编译即可
在这里插入图片描述或者将airmap关掉,在qgc主目录下新建user_config.pri,加入内容:DEFINES += DISABLE_AIRMAP

上面的错误在4.2.4版本QGC上只需要再重新编译一次就可以了

编译完出现如下提示
在这里插入图片描述执行

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager

上面这两条命令后需要重启电脑,重启之后地面站才能连接飞控

三、编译安卓版QGC

安装jdk11

笔者曾使用jdk18,编译会报错,这里建议安装jdk11

sudo apt-get install openjdk-11-jdk

配置Qt creator

点击工具->外部->Configure
请添加图片描述
打开设备那一栏,点击JDK location右边的浏览,
请添加图片描述
选择下面的目录
请添加图片描述
然后点击Set up SDK,等待自动安装和配置,安装过程中所以的确认选项选是
请添加图片描述
安装成功后如下图,正常的话OpenSSL是正常配置的,如果没有正常配置,点击右侧的Download OpenSSL进行配置,最后点击应用,然后点击确定。
请添加图片描述
QGC的AndroidManifest.xml设置成API31
在这里插入图片描述

配置手机

选择编译套件为安卓
请添加图片描述
如果软件没有自动识别编译套件,可以手动添加:
点击项目->管理构建套件->Qt版本->添加
选择qt安装目录下的qmake文件
请添加图片描述
如果没有连接实体手机或者虚拟手机,手机图标右下角为红点
请添加图片描述
这时在编译安卓版QGC时,会出现下图提示,需要连接手机设备。

10:06:46: The deployment device "22041211AC" is disconnected.
Error while building/deploying project qgroundcontrol (kit: Android Qt 5.15.2 Clang Multi-Abi)
When executing step "Deploy to Android device"

笔者用实体手机测试,再测试前,需要对手机进行设置.
笔者所用手机为redme note8 pro 5G版.
设置->我的设备->全部参数
找到如下图所示"MIUI版本"连续点击6次,进入开发者模式.
在这里插入图片描述
然后点击设置->更多设置->开发者选项
授权以下三项.
在这里插入图片描述
然后用USB线将手机连接至电脑,此时手机端会弹出下图提示,选择"传输文件"
在这里插入图片描述
设置好之后将手机通过USB连接电脑,正常的话电脑能识别到手机设备,在QT中将设备设置为手机,确认手机状态为Ready to use
请添加图片描述可以看到手机图标右下角变成了绿色,然后点击三角形编译
请添加图片描述
如果手机图标右下角是黄色,状态为connected,
在这里插入图片描述
点击下图的Refresh即可变成绿色
在这里插入图片描述
编译后会自动安装QGC到手机,如果编译后出现下面的提示,原因是手机上已经安装了其他版本的QGC,可以卸载后再重新编译安装即可。
请添加图片描述
编译过程中如果出现下面提示,选是即可
在这里插入图片描述

配置遥控器

如果想在带安卓系统的遥控器上安装地面站,设置方法和手机相似,以云卓H16遥控器为例,打开设置->开发者选项->使能USB调试
在这里插入图片描述
选择USB配置为MTP
在这里插入图片描述
设置完成后电脑就可以识别到遥控器,选择遥控设备后就可以编译。
在这里插入图片描述

常见报错

报错
请添加图片描述解决办法:按照提示设置ABIs请添加图片描述报错
第一次编译出现许多无法下载的错误
请添加图片描述解决办法:联网再编译

猜你喜欢

转载自blog.csdn.net/qq_38768959/article/details/126636417