PX4 Autopilot 编译报错问题解决方法
1. make[2]: *** 没有规则可制作目标“dirlinks”。 停止。
[1/1159] Generating ../../../platforms/nuttx/NuttX/nuttx/.config
FAILED: ../../platforms/nuttx/NuttX/nuttx/.config
cd /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/nuttx && /usr/bin/cmake -E copy_if_different /home/password_is_1/px4/1.10.1/PX4-Autopilot/build/px4_fmu-v5_default/NuttX/nuttx/Make.defs /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/nuttx/Make.defs && /usr/bin/cmake -E copy_if_different /home/password_is_1/px4/1.10.1/PX4-Autopilot/boards/px4/fmu-v5/nuttx-config/nsh/defconfig /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/nuttx/.config && /usr/bin/cmake -E copy_if_different /home/password_is_1/px4/1.10.1/PX4-Autopilot/boards/px4/fmu-v5/nuttx-config/nsh/defconfig /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/nuttx/defconfig && /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/tools/px4_nuttx_make_olddefconfig.sh > /home/password_is_1/px4/1.10.1/PX4-Autopilot/build/px4_fmu-v5_default/NuttX/nuttx_olddefconfig.log && /usr/bin/cmake -E copy_if_different /home/password_is_1/px4/1.10.1/PX4-Autopilot/platforms/nuttx/NuttX/nuttx/.config /home/password_is_1/px4/1.10.1/PX4-Autopilot/build/px4_fmu-v5_default/NuttX/nuttx/.config
make[2]: *** 没有规则可制作目标“dirlinks”。 停止。
make[1]: *** [dirlinks] Error 2
[3/1159] Generating parameters.xml
ninja: build stopped: subcommand failed.
Makefile:230: recipe for target 'px4_fmu-v5_default' failed
make: *** [px4_fmu-v5_default] Error 1
PX4 Autopilot 固件编译大多数报错都是因为 子模块没有下载完全导致;
有时候因为网络问题下载到的子模块是空的文件夹,这样编译也会报错,直接删掉该文件夹重新执行。
git submodule update --init --recursive
比如第一个报错就是因为 PX4-Autopilot/platforms/nuttx/NuttX/ 下面的 app子模块没有下载完全导致的报错。
最后给出 PX4 切分支、编译的正确步骤
#如果下载好 Autopilot,需要切换分支,最好先执行下面语句
make distclear
#然后使用切分支, v1.11.1 是 tag 分支
git checkout v1.11.0
#最重要的一步,很多时候由于网络波动,往往一次下载不会成功,就多试几次
git submodule update --init --recursive
make px4_fmu-v5_default
2. 编译 warning 或是 Error:
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_set_home_position.h: In function 'uint16_t mavlink_msg_set_home_position_encode_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, const mavlink_set_home_position_t*)':
../../mavlink/include/mavlink/v2.0/c