Compilation multiplateforme en Rust avec cross : Techniques et configuration simplifiées

cross est un outil conçu pour la compilation et les tests cross-platform en Rust, exploitant la conteneurisation pour fournir des environnements préconfigurés sans intervention manuelle. Il élimine la complexité de l'installation de chaînes d'outils et des dépendances pour diverses architectures cibles.

Avantages de cross pour la compilation Rust multiplateforme

L'outil offre une solution complète avec :

  • Configuration automatique des environnements de build pour les cibles spécifiées.
  • Isolation via des conteneurs Docker ou Podman pour des builds reproductibles.
  • Support étendu pour des plateformes telles que Linux, Windows, Android et WebAssembly.
  • Compatibilité directe avec les commandes Cargo standard.

Installation et préparation de l'environnement

Pour commencer, assurez que Rustup est installé en exécutant le script d'installation :

curl -L https://sh.rustup.rs | sh

Ensuite, installez cross via Cargo :

cargo install cross

Configurez un moteur de conteneur : Docker Desktop pour Windows/macOS, ou Podman/Docker pour Linux. Vérifiez son fnoctionnement avec une commande comme docker info ou podman info.

Commandes essentielles et exemples pratiques

L'utilisation de cross simule les commandes Cargo, en ajoutant le paramètre --target pour spécifier l'architecture :

# Compilation pour ARM 64 bits Linux
cross build --target aarch64-unknown-linux-gnu --release

# Exécution d'un binaire cible
cross run --target aarch64-unknown-linux-gnu

# Lancement des tests pour une cible spécifique
cross test --target aarch64-unknown-linux-gnu

Pour tester, créez un projet simple :

cargo new --bin demo_project
cd demo_project
cross build --target aarch64-unknown-linux-gnu

Cette opération télécharge automatiquement l'image Docker contenant la toolchain requise et génère le binaire dans le dossier cible.

Personnalisation avancée avec Cross.toml

Ajustez les paramètres de compilation en créant un fichier Cross.toml à la racine du projet. Par exemple, pour activer l'utilisation de Zig comme compilateur C croisé :

[build]
enable_zig = true

Consultez la documentation officielle pour des options détaillées telles que les variables d'environnement ou les images Docker personnalisées.

Dépannage des problèmes fréquents

Si des erreurs de toolchain surviennent, comme un support manquant, réinstallez la toolchain avec :

rustup toolchain uninstall stable
rustup toolchain install stable --force-non-host

Pour les environnements rootless, assurez que la variable d'environnement CROSS_ROOTLESS_CONTAINER_ENGINE est définie à 1 avant d'utiliser cross.

Les architectures courantes prises en charge incluent aarch64-unknown-linux-gnu, x86_64-pc-windows-msvc, wasm32-unknown-unknown, et armv7-unknown-linux-gnueabihf. Une liste complète est disponible dans le fichier de configuration des cibles de cross.

Étiquettes: Rust cross-compilation Docker Podman aarch64

Publié le 15 juin à 01h58