您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
交叉编译
概述
- 开放机器人技术公司为多个平台提供了预构建的 ROS 2 软件包,但许多开发人员仍依赖于 交叉编译 原因各不相同,例如
开发机器与目标系统不匹配。
针对特定内核架构调整构建(例如,为 Raspberry Pi3 构建时设置 -mcpu=cortex-a53 -mfpu=neon-fp-armv8)。
目标文件系统不在 Open Robotics 发布的预置镜像支持的文件系统之列。
它是如何工作的?
交叉编译简单软件(如不依赖外部库)相对简单,只需使用交叉编译工具链代替本地工具链即可。
- 有许多因素使这一过程变得更加复杂:
构建的软件必须支持目标架构。在构建过程中,必须根据目标架构正确隔离和启用特定架构代码。例如汇编代码。
在交叉编译使用依赖包的目标软件之前,所有依赖包(如库)都必须以预编译包或交叉编译包的形式存在。
在使用构建工具(如 colcon)构建软件堆栈(而非独立软件)时,构建工具应提供一种机制,允许开发人员在堆栈中每个软件所使用的底层构建系统上进行交叉编译。
替代品
交叉编译的另一种方法是 构建多平台 Docker 映像 使用 装卸工 建立x
.