devzone.org.ua/post/prostyy-sposib-kros-kompiliatsiyi-rust-z-cross.md
2026-01-22 01:03:52 +02:00

2.1 KiB
Raw Permalink Blame History

Простий спосіб крос-компіляції Rust з cross

Довго мучився зі збіркою безпосередньо на сервері, постійно звільняючи там простір та додаючи swap. Згодом, мені це набридло і за пару хвилин віднайшов простий спосіб крос-компіляції з крейтом cross.

Встановлення відбувається однією командою:

cargo install cross --git https://github.com/cross-rs/cross

Перш, як продовжити, варто почистити кеш збірки, що було згенеровано для поточної архітектури:

cargo clean

Компіляція відбувається майже так само як з cargo, але засобами обгортки cross:

cross build --release --target armv7-unknown-linux-gnueabihf
  • при першому виконанні, буде автоматично встановлене контейнерне середовище для --target
  • після завершення збірки, копіюємо бінарники (з теки target/armv7-unknown-linux-gnueabihf) на цільовий пристрій

Приклади компіляції специфічних програм

У більшості випадків, все має працювати так само як з cargo, але деякі користувачі мають кастомні рецепти, які я збиратиму нижче.

mycelium

Если бы было всё так просто. У меня еще надо:

export CROSS_CONTAINER_OPTS="\
  --volume /home/ufm/src/mycelium/docs:/home/ufm/src/mycelium/docs:ro \
  --env RUST_MIN_STACK=16777216 \
"

И только потом

cross build --release --target x86_64-unknown-linux-musl