PX4 编译报错问题解决方法、PX4切换固定版本编译

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/common/./mavlink_msg_set_home_position.h:214:295: warning: taking address of packed member of '__mavlink_set_home_position_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  214 |     return mavlink_msg_set_home_position_pack_chan(system_id, component_id, chan, msg, set_home_position->target_system, set_home_position->latitude, set_home_position->longitude, set_home_position->altitude, set_home_position->x, set_home_position->y, set_home_position->z, set_home_position->q, set_home_position->approach_x, set_home_position->approach_y, set_home_position->approach_z, set_home_position->time_usec);
      |                                                                                                                                                                                                                                                                                    ~~~~~~~~~~~~~~~~~~~^
In file included from ../../mavlink/include/mavlink/v2.0/common/common.h:1917,
                 from ../../mavlink/include/mavlink/v2.0/common/mavlink.h:32,
                 from ../../src/drivers/uavcan/uavcan_servers.cpp:65:
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_camera_image_captured.h: In function 'uint16_t mavlink_msg_camera_image_captured_encode(uint8_t, uint8_t, mavlink_message_t*, const mavlink_camera_image_captured_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_camera_image_captured.h:192:329: warning: taking address of packed member of '__mavlink_camera_image_captured_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  192 |     return mavlink_msg_camera_image_captured_pack(system_id, component_id, msg, camera_image_captured->time_boot_ms, camera_image_captured->time_utc, camera_image_captured->camera_id, camera_image_captured->lat, camera_image_captured->lon, camera_image_captured->alt, camera_image_captured->relative_alt, camera_image_captured->q, camera_image_captured->image_index, camera_image_captured->capture_result, camera_image_captured->file_url);
      |                                                                                                                                                                                                                                                                                                                  ~~~~~~~~~~~~~~~~~~~~~~~^
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_camera_image_captured.h: In function 'uint16_t mavlink_msg_camera_image_captured_encode_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, const mavlink_camera_image_captured_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_camera_image_captured.h:206:340: warning: taking address of packed member of '__mavlink_camera_image_captured_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  206 |     return mavlink_msg_camera_image_captured_pack_chan(system_id, component_id, chan, msg, camera_image_captured->time_boot_ms, camera_image_captured->time_utc, camera_image_captured->camera_id, camera_image_captured->lat, camera_image_captured->lon, camera_image_captured->alt, camera_image_captured->relative_alt, camera_image_captured->q, camera_image_captured->image_index, camera_image_captured->capture_result, camera_image_captured->file_url);
      |                                                                                                                                                                                                                                                                                                                             ~~~~~~~~~~~~~~~~~~~~~~~^
In file included from ../../mavlink/include/mavlink/v2.0/common/common.h:1934,
                 from ../../mavlink/include/mavlink/v2.0/common/mavlink.h:32,
                 from ../../src/drivers/uavcan/uavcan_servers.cpp:65:
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_obstacle_distance.h: In function 'uint16_t mavlink_msg_obstacle_distance_encode(uint8_t, uint8_t, mavlink_message_t*, const mavlink_obstacle_distance_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_obstacle_distance.h:173:158: warning: taking address of packed member of '__mavlink_obstacle_distance_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  173 |     return mavlink_msg_obstacle_distance_pack(system_id, component_id, msg, obstacle_distance->time_usec, obstacle_distance->sensor_type, obstacle_distance->distances, obstacle_distance->increment, obstacle_distance->min_distance, obstacle_distance->max_distance, obstacle_distance->increment_f, obstacle_distance->angle_offset, obstacle_distance->frame);
      |                                                                                                                                           ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_obstacle_distance.h: In function 'uint16_t mavlink_msg_obstacle_distance_encode_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, const mavlink_obstacle_distance_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_obstacle_distance.h:187:169: warning: taking address of packed member of '__mavlink_obstacle_distance_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  187 |     return mavlink_msg_obstacle_distance_pack_chan(system_id, component_id, chan, msg, obstacle_distance->time_usec, obstacle_distance->sensor_type, obstacle_distance->distances, obstacle_distance->increment, obstacle_distance->min_distance, obstacle_distance->max_distance, obstacle_distance->increment_f, obstacle_distance->angle_offset, obstacle_distance->frame);
      |                                                                                                                                                      ~~~~~~~~~~~~~~~~~~~^~~~~~~~~
In file included from ../../mavlink/include/mavlink/v2.0/common/common.h:1935,
                 from ../../mavlink/include/mavlink/v2.0/common/mavlink.h:32,
                 from ../../src/drivers/uavcan/uavcan_servers.cpp:65:
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h: In function 'uint16_t mavlink_msg_odometry_encode(uint8_t, uint8_t, mavlink_message_t*, const mavlink_odometry_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:247:184: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  247 |     return mavlink_msg_odometry_pack(system_id, component_id, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);
      |                                                                                                                                                                              ~~~~~~~~~~^
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:247:302: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  247 |     return mavlink_msg_odometry_pack(system_id, component_id, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);
      |                                                                                                                                                                                                                                                                                                    ~~~~~~~~~~^~~~~~~~~~~~~~~
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:247:329: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  247 |     return mavlink_msg_odometry_pack(system_id, component_id, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);
      |                                                                                                                                                                                                                                                                                                                               ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h: In function 'uint16_t mavlink_msg_odometry_encode_chan(uint8_t, uint8_t, uint8_t, mavlink_message_t*, const mavlink_odometry_t*)':
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:261:195: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  261 |     return mavlink_msg_odometry_pack_chan(system_id, component_id, chan, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);
      |                                                                                                                                                                                         ~~~~~~~~~~^
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:261:313: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  261 |     return mavlink_msg_odometry_pack_chan(system_id, component_id, chan, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);
      |                                                                                                                                                                                                                                                                                                               ~~~~~~~~~~^~~~~~~~~~~~~~~
../../mavlink/include/mavlink/v2.0/common/./mavlink_msg_odometry.h:261:340: warning: taking address of packed member of '__mavlink_odometry_t' may result in an unaligned pointer value [-Waddress-of-packed-member]
  261 |     return mavlink_msg_odometry_pack_chan(system_id, component_id, chan, msg, odometry->time_usec, odometry->frame_id, odometry->child_frame_id, odometry->x, odometry->y, odometry->z, odometry->q, odometry->vx, odometry->vy, odometry->vz, odometry->rollspeed, odometry->pitchspeed, odometry->yawspeed, odometry->pose_covariance, odometry->velocity_covariance, odometry->reset_counter, odometry->estimator_type);

很可能是编译器或者系统不支持。比如上面的报错是在 Ubuntu 18.04 上面编译 PX4-Autopilot v1.10.1出现的报错。可以换成 Ubuntu 16.04 系统编译 v1.10.1 版本的固件。v1.11.0以及之后版本的固件在 Ubuntu 18.04 系统编译都没有问题。

在这里插入图片描述

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值