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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章