Written by
Sangwan Kwon
on
on
Cross compilation on rust
To cross-compile is to build on one platform a binary that will run on another platform.
Host default target
When we type out cargo build,
the compiler builds with host default target.
To check target manually, use cfg.
The target triple is <arch>-<vendor>-<os>-<env>.
$ rustc --print cfg
debug_assertions
panic="unwind"
target_arch="x86_64"
target_endian="little"
target_env="gnu"
...
target_os="linux"
target_pointer_width="64"
target_thread_local
target_vendor="unknown"
unix
Also, we can check it using default-target crate.
$ cargo install default-target
$ default-target
x86_64-unknown-linux-gnu
Cross compilation
To cross compile, install target what we want to run on another platform.
rustup target add thumbv8m.main-none-eabi
Then, we can build like
cargo build --target thumbv8m.main-none-eabi
To set default target, write .cargo/config at crate root.
[build]
target = "thumbv8m.main-none-eabi"