当前位置:   article > 正文

ubuntu编译QGroundControl历程及问题解决--待补充_:-1: error: mavlink folder does not exist at 'libs

:-1: error: mavlink folder does not exist at 'libs/mavlink/include/mavlink/v

准备工作:ubuntu20.04版本(不要18版本,会遇到问题)–>ubuntu安装
ubuntu18版本后期会遇到(启动qcreator时)

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found
  • 1

ubuntu18默认GLIBC_2.27版本,升级这个特别麻烦,网上有大佬解决成功了,过程非常繁琐.所以我选择了升级系统版本–>升级GLIBC过程(VIP文章,想了解可以私信我)
这里把会遇到的问题都列举一下
问题一:

error: Project ERROR: MAVLink folder does not exist at 'libs/mavlink/include/mavlink/v2.0'! Run 'git submodule init && git submodule update' on the command line.
  • 1

就按照提示执行一下git submodule init && git submodule update就可以了
问题二:

error: dependent 'libs\xz-embedded\linux\lib\xz\xz_crc32.c' does not exist.
  • 1

原因是没有这块代码,可以去gitee中下载的。下载完成后解压,将目录名改成xz-embedded,并拷到libs目录中,覆盖掉之前的。然后记得执行make clean
问题三:

  “nlohmann_json/include/nlohmann/json_fwd.hpp”: No such file or directo
  • 1

这个同样也需要自己下载,下载完成后把nlohmann_json放到libs\libevents\libevents\libs\cpp\parse\目录下,并在QGCExternalLibs.pri文件中指定INCLUDEPATH+=libs\libevents\libevents\libs\cpp\parse\nlohmann_json\include,同样在编译的时候执行 make clean.
系统安装成功后,是一个空空如也的系统,什么都需要自己下载.
首先ubuntu的页面不是全屏,解决方式有两种
1.可以用命令行去操作,但是不是太稳定,重启会失效,屏幕也可能没有合适的分辨率–>输入xrandr,然后输入你需要的分辨率 xrandr -s 1920x1440
2.利用Vmware的Tools去实现,一劳永逸类型,本人利用的这种类型–>实现Ubuntu全屏
3.代码下载,先去官网查看说明–>官网主分支代码,本人下载的是最新版本的代码,然后去qgc去查看安装说明(点击readme文件中的build)–>安装说明
整合:
代码下载:

git clone --recursive -j8 https://github.com/mavlink/qgroundcontrol.git
git submodule update --recursive
  • 1
  • 2

编译器:64 bit, gcc compiler
Qt version: 5.15.2 (官网说明只支持这一个版本)
组件下载:

必需组件:
sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev patchelf
音频组件下载:
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 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

安装qt–>安装Qt
20版本遇到的问题

airmap/client.h: No such file or diretory
  • 1

qmake的时候加上一个参数,qmake的时候执行qmake DEFINES=DISABLE_AIRMAP …

/usr/bin/env: ‘bash\r’: No such file or directory
  • 1

这是因为.sh是doc格式的,进去vim,执行: set ff=unix转换格式即可.

make:Nothing to be done for 'first'
  • 1

这是因为多次执行make,而你没有任何改变,你有改动之后再make就ok

g++:fatal erroe:killed signal terninated program
  • 1

这是因为内存不够,强制把进程杀死.可以重新执行编译,也可以指定少些线程数执行.
最后看到 linking staging/QGroundControl,一大段脚本,Post…common,说明你成功了.
然后去staging文件夹找可执行文件,第一次会弹出一个框,提醒你安装所需组件,安装后,就可以执行了.
成功实例

以上是我这次编译遇到的大部分问题,随时补充.有问题评论~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/211529
推荐阅读
相关标签
  

闽ICP备14008679号