ubuntu编译QGroundControl历程及问题解决--待补充

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

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

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.

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

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

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

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

这个同样也需要自己下载,下载完成后把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

编译器: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 

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

airmap/client.h: No such file or diretory

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

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

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

make:Nothing to be done for 'first'

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

g++:fatal erroe:killed signal terninated program

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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值