Chaîne de compilation Rust

Les outils nécessaires pour la compilation en Rust peuvent être installés avec rustup, qui peut venir avec votre distribution ou être installé depuis ce site web. rustup se chargera ensuite de maintenir le compilateur et les utilitaires à jour.

Dans cette formation, nous utiliserons la chaîne de compilation stable :

$ rustup default stable

On pourra vérifier quelle(s) chaîne(s) de compilation sont installées et laquelle est sélectionnée par défaut :

$ rustup toolchain list
stable-x86_64-unknown-linux-gnu (default)

Vérification de l'installation

L'installation du compilateur lui-même peut être vérifiée en allant dans /tmp et en créant un fichier t.rs contenant :

fn main() {
  println!("Hello, world!");
}

et en exécutant dans ce même répertoire les commandes suivantes :

$ rustc t.rs
$ ./t
Hello, world!

En pratique, nous n'appellerons jamais rustc directement, nous passerons par cargo.

Composants additionnels

Nous utiliserons également les composants cargo, rustfmt et clippy. Ceux-ci ont probablement été installés automatiquement par rustup, mais la commande suivante permettra de s'en assurer :

$ rustup component add rustfmt clippy

On pourra vérifier quels composants sont installés :

$ rustup component list --installed
cargo-x86_64-unknown-linux-gnu
clippy-x86_64-unknown-linux-gnu
rust-docs-x86_64-unknown-linux-gnu
rust-std-x86_64-unknown-linux-gnu
rustc-x86_64-unknown-linux-gnu
rustfmt-x86_64-unknown-linux-gnu

Cibles de compilation

Rust permet de compiler nativement ou en configuration croisée, par exemple pour programmer des systèmes embarqués. Par défaut, seule la cible correspondant à l'ordinateur courant est disponible (commande exécutée sur un système Linux) :

$ rustup target list --installed
x86_64-unknown-linux-gnu

En omettant --installed il est possible de voir quelles cibles additionnelles peuvent être installées.

$ rustup target list
aarch64-apple-darwin
aarch64-apple-ios
aarch64-apple-ios-sim
aarch64-fuchsia
aarch64-linux-android
aarch64-pc-windows-msvc
[…]
x86_64-sun-solaris
x86_64-unknown-freebsd
x86_64-unknown-illumos
x86_64-unknown-linux-gnu (installed)
x86_64-unknown-linux-gnux32
x86_64-unknown-linux-musl
x86_64-unknown-netbsd
x86_64-unknown-redox

Ce cours n'utilisant que des cibles natives il n'est pas nécessaire d'installer d'autres cibles.