关于交叉编译

概述

开放机器人(Open Robotics)为多个平台提供预构建的ROS 2包,但是出于各种原因许多开发人员仍然依赖 交叉编译 ,例如: [Alyssa@9719]
  • 开发机器与目标系统不匹配。 [Alyssa@9720]

  • 根据特定核心架构进行调整 (例如,当为树莓派(Raspberry Pi3)构建时设置-mcpu = cortex-a53 -mfpu = neon-fp-armv8)。 [Alyssa@9721]

  • 针对不同的文件系统,而不是Open Robotics发布的预构建镜像支持的文件系统。 [Alyssa@9722]

它是如何工作的? [待校准@9723]

交叉编译简单软件 (例如,不依赖于外部库) 相对简单,只需要使用交叉编译器工具链而不是本机工具链。 [待校准@9724]

有许多因素使这个过程更加复杂:-正在构建的软件必须支持目标架构。根据目标体系结构,在构建过程中必须适当隔离和启用特定于体系结构的代码。示例包括汇编代码。-在使用它们的目标软件交叉编译之前,所有依赖项 (例如库) 必须已经存在,或者作为作为预构建包,或者也必须交叉编译。-当使用构建工具 (例如 colcon)构建软件堆栈(相对于独立的软件)时,期望构建工具提供一种机制,允许开发人员在堆栈中每个软件使用的底层构建系统上启用交叉编译。 [Alyssa@9725]

交叉编译ROS 2

ROS 2交叉编译工具由Open Robotic和ROS工具工作组共同拥有。它是一个Python脚本,使用docker容器中的仿真器编译支持的目标架构的ROS 2源文件。工具的详细设计可以在 ROS 2 设计 上找到。使用该工具的说明在 交叉编译软件包[Alyssa@9727]

如果您使用的是旧版本,请遵循 交叉编译向导 进行操作。 [Alyssa@9728]