# Простий спосіб крос-компіляції Rust з cross Довго мучився зі збіркою безпосередньо на сервері, постійно звільняючи там простір та додаючи swap. Згодом, мені це набридло і за пару хвилин віднайшов простий спосіб крос-компіляції з крейтом [cross](https://crates.io/crates/cross). Встановлення відбувається однією командою: ``` bash cargo install cross --git https://github.com/cross-rs/cross ``` Перш, як продовжити, варто почистити кеш збірки, що було згенеровано для поточної архітектури: ``` bash cargo clean ``` Компіляція відбувається майже так само як з `cargo`, але засобами обгортки `cross`: ``` bash cross build --release --target armv7-unknown-linux-gnueabihf ``` * при першому виконанні, буде автоматично встановлене контейнерне середовище для `--target` * після завершення збірки, копіюємо бінарники (з теки `target/armv7-unknown-linux-gnueabihf`) на цільовий пристрій ## Приклади компіляції специфічних програм У більшості випадків, все має працювати так само як з `cargo`, але деякі користувачі мають кастомні рецепти, які я збиратиму нижче. ### [mycelium](https://github.com/threefoldtech/mycelium) > Если бы было всё так просто. У меня еще надо: ``` bash export CROSS_CONTAINER_OPTS="\ --volume /home/ufm/src/mycelium/docs:/home/ufm/src/mycelium/docs:ro \ --env RUST_MIN_STACK=16777216 \ " ``` > И только потом ``` bash cross build --release --target x86_64-unknown-linux-musl ``` * [джерело](https://twinkle.lol/item/1a77e335-65f1-4af9-9a25-39674c679fac)