警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

关于交叉编译

概述

开放机器人技术公司为多个平台提供了预构建的 ROS 2 软件包,但许多开发人员仍依赖于 交叉编译 原因各不相同,例如
  • 开发机器与目标系统不匹配。

  • 针对特定内核架构调整构建(例如,为 Raspberry Pi3 构建时设置 -mcpu=cortex-a53 -mfpu=neon-fp-armv8)。

  • 除 Open Robotics 发布的预置镜像支持的文件系统外,还可使用其他文件系统。

它是如何工作的?

交叉编译简单软件(如不依赖外部库)相对简单,只需使用交叉编译工具链代替本地工具链即可。

有许多因素使这一过程变得更加复杂: - 构建的软件必须支持目标架构。在构建过程中,必须根据目标架构正确隔离和启用特定架构代码。例如汇编代码。- 所有依赖项(如库)必须以预编译包的形式存在,或在交叉编译使用这些依赖项的目标软件之前进行交叉编译。- 使用构建工具(如 colcon)构建软件堆栈(而非独立软件)时,构建工具应提供一种机制,允许开发人员在堆栈中每个软件使用的底层构建系统上启用交叉编译。

交叉编译 ROS 2

ROS 2 交叉编译工具由开放机器人技术公司和 ROS 工具工作组共同拥有。它是一个 Python 脚本,可使用 docker 容器中的模拟器为支持的目标架构编译 ROS 2 源文件。该工具的详细设计见 ROS 2 设计.该工具的使用说明载于 交叉编译软件包.

如果您使用的是旧版本,请按照 交叉编译指南.