mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
44 lines
No EOL
2.1 KiB
Text
44 lines
No EOL
2.1 KiB
Text
# Простий спосіб крос-компіляції 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 джерело |