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 切分支、编译的正确步骤
make distclear
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 系统编译都没有问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)