gemlog/public/uk/rust-cross-compilation-with-cross-crate.gmi
2026-01-22 01:05:40 +02:00

44 lines
No EOL
2.1 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Простий спосіб крос-компіляції 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 джерело