交叉编译

概述

Open Robotics为多个平台提供预构建的ROS 2软件包,但一些开发者仍然出于不同的原因依赖于`交叉编译 <https://en.wikipedia.org/wiki/Cross_compiler>`__,例如:
  • 开发机器与目标系统不匹配。

  • 调整构建以适应特定的核心架构(例如,在为树莓派3构建时设置 -mcpu=cortex-a53 -mfpu=neon-fp-armv8)。

  • 针对Open Robotics发布的预构建映像不支持的文件系统进行定制。

它是如何工作的?

交叉编译简单的软件(例如,没有依赖于外部库)相对简单,只需要使用交叉编译工具链代替本机工具链。

有一些因素使这个过程更加复杂:
  • 正在构建的软件必须支持目标架构。根据目标架构,在构建过程中必须正确隔离和启用特定于架构的代码。例如,包括汇编代码。

  • 所有依赖项(例如库)在目标软件进行交叉编译之前必须存在,可以是预构建的或交叉编译的软件包。

  • 在使用构建工具(例如colcon)构建软件堆栈(而不是独立软件)时,预计构建工具提供一种机制,允许开发人员在堆栈中每个软件所使用的底层构建系统上启用交叉编译。

ROS 2交叉编译

ROS 2交叉编译工具由Open Robotics和ROS Tooling工作组共同拥有。它是一个Python脚本,使用docker容器中的模拟器为支持的目标架构编译ROS 2源文件。有关该工具的详细设计,请参阅`ROS 2设计文档<https://design.ros2.org/articles/cc_build_tools.html>`__。使用该工具的说明在`cross_compile package <https://github.com/ros-tooling/cross_compile>`__中。

如果您使用的是旧版本,请按照 交叉编译指南 进行操作。