Linux下编译qgroundcontrol源码

1、版本说明

    Linux版本:Ubuntu16.04
    qgroundcontrol版本:4.0.8
    QT版本:5.12.6

2、qgroundcontrol源码下载

(1)将qgroundcontrol源码克隆到本地:

git clone https://github.com/mavlink/qgroundcontrol.git --recursive

        这条指令往往下载非常慢,而且可能会报错(error: RPC failed)而下载中断,具体可参考github下载问题解决。这里采用的方法是将代码转移到gitee上进行下载,速度飞快,下载代码如下:

git clone https://gitee.com/zhtang/qgroundcontrol.git

 (2)下载依赖项

cd qgroundcontrol/

        进入到主目录下,按Ctrl+H,可以看到qgroundcontrol路径下有两个隐藏文件夹.git/和.github,紧接着执行下面这一步(很重要):

git submodule init && git submodule update

        这一步是为了下载相关的依赖项,即:

Submodule 'libs/OpenSSL/android_openssl' (https://github.com/Auterion/android_openssl) registered for path 'libs/OpenSSL/android_openssl'
Submodule 'libs/mavlink/include/mavlink/v2.0' (https://github.com/mavlink/c_library_v2.git) registered for path 'libs/mavlink/include/mavlink/v2.0'
Submodule 'libs/qmlglsink/gst-plugins-good' (https://github.com/mavlink/gst-plugins-good.git) registered for path 'libs/qmlglsink/gst-plugins-good'
Submodule 'src/GPS/Drivers' (https://github.com/PX4/GpsDrivers.git) registered for path 'src/GPS/Drivers'

        注意:如果这一步下载速度仍然很慢,那么可以在gitee上下载对应的依赖包,放到相应的位置即可。

3、qgroundcontrol源码编译

(1)安装QT5.12.6,参参考博客安装QT5.12.6

(2)打开Qtcreator,选择qgroundcontrol.pro文件来打开整个qgroundcontrol工程;

(3)选择Desktop Qt 5.12.6 GCC 64bit,并将第一个勾去掉,如下图所示:

(4)打开后整个工程如下:

(5)编译整个工程(点击左下角的小锤子即可);

(6)编译完成后,在/build-qgroundcontrol-Desktop_Qt_5_12_6_GCC_64bit-Debug/staging文件夹下会生成一个可执行文件QGroundControl,双击即可使用。

4、编译过程问题记录

问题1::-1: error: MAVLink folder does not exist at 'libs/mavlink/include/mavlink/v2.0'! Run 'git submodule init && git submodule update' on the command line.截图如下:

原因分析:这个问题是由于未执行指令git submodule init && git submodule update导致的。
解决方案:在下载好qgroundcontrol包后在qgroundcontrol/路径下执行git submodule init && git submodule update这条指令即可。

问题2:Cannot read /home/zydz/software/QGC/qgroundcontrol/user_config.pri: No such file or directory

解决方案:在工程中右键选中qgroundcontrol[master],选择Clean,然后重新进行编译就没有这个问题了。

问题3:error: attributes at the beginning of statement are ignored [-Werror=attributes]

解决方案:这个问题是由于C++17的新特性,而这个工程不支持,粗暴的解决方案是直接屏蔽掉[[fallthrough]];这一句。一共需要屏蔽3处:QGCCameraIO.cc 第79行和179行以及APMFirmwarePlugin.cc第380行。

参考网址

https://github.com/mavlink/QGroundControl/releases

https://dev.qgroundcontrol.com/en/getting_started/

https://blog.csdn.net/enjoyyl/article/details/83385666

猜你喜欢

转载自blog.csdn.net/JIEJINQUANIL/article/details/107008376