PX4编译过程中报错通用解决办法

背景说明

时刻两年,再次配置PX4环境,又踩了一遍坑,过程中遇到报错真的是欲哭无泪,但是解决完回头再来看其实问题并不复杂。
本篇文章面向在PX4-Autopilot目录执行命令
make px4_sitl gazebo
检测环境是否配置成功时出现的子模块缺失的问题,是这次配置环境时的血泪教训。

报错表现形式

这类问题在配置PX4环境过程中极为常见,但报错形式多种多样,以下是几种例子:

  1. ninja: error: '../../src/modules/mavlink/mavlink/pymavlink/tools/mavgen.py', needed by 'mavlink/development/development.h', missing and no known rule to make it
  2. Cannot find source file: devices/src/gps_helper.cpp
  3. FAILED: src/modules/microdds_client/src/libmicroxrceddsclient_project-stamp/libmicroxrceddsclient_project-configure

    CMake Error: The source directory "/home/.../PX4-Autopilot/src/modules/microdds_client/Micro-XRCE-DDS-Client" does not appear to contain CMakeLists.txt.
    这个报错在国内外很多问答上都提到过,但是并未给出好的解决该问题的方法。

这类问题在我们执行git submodule update --init --recursive之后无返回信息,且在PX4-Autopilot目录下执行完

sudo apt-get update
sudo apt-get upgrade

也没有需要更新的包之后仍然可能出现。
究其原因仍旧是因为子模块没有下载完整。

通用解决方法

我们可以去到对应模块目录下(例如文件夹/home/你自己的用户名/PX4-Autopilot/src/modules/microdds_client/Micro-XRCE-DDS-Client,对应上面第三种报错),发现里面只有一个文件。这个文件夹的存在让github以为我们下载好了,但实际上并没有下载好,于是我们需要手动重新clone该子模块。
PX4需要的子模块及其链接能在/home/你自己的用户名/PX4-Autopilot/.gitmodules文件里找到。
以该子模块为例,我们能在文件中找到以下内容

[submodule "src/modules/microdds_client/Micro-XRCE-DDS-Client"]
	path = src/modules/microdds_client/Micro-XRCE-DDS-Client
	url = https://github.com/PX4/Micro-XRCE-DDS-Client.git
	branch = px4

于是我们可以进入到目录/home/你自己的用户名/PX4-Autopilot/src/modules/microdds_client将文件夹Micro-XRCE-DDS-Client删除,并在当前目录下开启终端,执行命令:
git clone https://github.com/PX4/Micro-XRCE-DDS-Client.git
然后回到PX4-Autopilot目录下再次尝试编译。

类似的在子模块的子模块也可能出现未成功下载的情况,同理找到对应文件夹下的.gitmodules文件里的子模块链接手动下载即可。

结语

希望这篇文章能帮助你们解决因奇奇怪怪的网络问题导致的子模块下载不完整的问题!

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值