À propos de la compilation croisée

Aperçu

Open Robotics fournit des packages ROS 2 pré-construits pour plusieurs plates-formes, mais un certain nombre de développeurs s’appuient toujours sur la compilation croisée pour différentes raisons telles que :
  • La machine de développement ne correspond pas au système cible.

  • Réglage de la construction pour une architecture de base spécifique (par exemple, réglage -mcpu=cortex-a53 -mfpu=neon-fp-armv8 lors de la construction pour Raspberry Pi3).

  • Cibler des systèmes de fichiers différents de ceux pris en charge par les images pré-construites publiées par Open Robotics.

Comment ça marche ?

La compilation croisée de logiciels simples (par exemple, sans dépendances à des bibliothèques externes) est relativement simple et ne nécessite qu’une chaîne d’outils de compilateur croisé à utiliser à la place de la chaîne d’outils native.

Plusieurs facteurs rendent ce processus plus complexe : - Le logiciel en cours de construction doit prendre en charge l’architecture cible. Le code spécifique à l’architecture doit être correctement isolé et activé lors de la génération en fonction de l’architecture cible. Les exemples incluent le code assembleur. - Toutes les dépendances (par exemple, les bibliothèques) doivent être présentes, soit sous forme de packages pré-construits, soit également compilées de manière croisée avant que le logiciel cible qui les utilise ne soit compilé de manière croisée. - Lors de la construction de piles de logiciels (par opposition à des logiciels autonomes) à l’aide d’outils de construction (par exemple, colcon), on s’attend à ce que l’outil de construction fournisse un mécanisme permettant au développeur d’activer la compilation croisée sur le système de construction sous-jacent utilisé par chaque morceau de logiciel dans la pile.

Cross-compilation ROS 2

L’outil de compilation croisée ROS 2 est sous la propriété partagée d’Open Robotics et du groupe de travail ROS Tooling. Il s’agit d’un script Python qui compile les fichiers source ROS 2 pour les architectures cibles prises en charge à l’aide d’un émulateur dans un conteneur Docker. La conception détaillée de l’outil peut être trouvée sur ROS 2 design. Les instructions d’utilisation de l’outil se trouvent dans le package cross_compile.

Si vous utilisez une version plus ancienne, veuillez suivre le guide de compilation croisée.