Инструкция и скрипты для сборки Rust проектов. Предназначены в первую очередь для тех, кто хочет собрать мои проекты, но c Rust не знаком.
Для начала необходимо установить Rust, см. инструкцию на оф. сайте.
Если планируется запускать на современных процессорах, то рекомендую выполнять следующую команду:
RUSTFLAGS='-C target-cpu=x86-64-v3' cargo build --releaseили аналогично для powershell:
$env:RUSTFLAGS="-C target-cpu=x86-64-v3"; cargo build --releaseЕсли планируется запускать на этом же компьютере, то тогда можно изменить таргет на: target-cpu=native. Если же планируется запускать на старом процессоре, то: target-cpu=x86-64-v2, либо можно выбрать конкретную архитектуру: target-cpu=skylake. Список всех таргетов см. с помощью команды: rustc --print target-cpus.
При сборке на линукс нужно иметь ввиду, что собранная программа не сможет запуститься на более старой ОС, а точнее с более старой версией glibc (проверить можно командой ldd --version). В таком случае, лучше выполнить сборку в контейнере, см. инструкцию дальше.
Главные преимущества:
- Не требуется установка
Rust(но требуется установленныйdockerилиpodman). - На
linuxможно собрать бинарники дляwindows.
Я рекомендую использовать podman, но если вы предпочитаете docker, то просто замените одно на другое (их параметры совместимы). Также, возможно, потребуется изменить target-cpu, о том, как выбрать нужное значение, было рассказано в предыдущем разделе.
Сборка для Linux:
podman run -it --rm \
--volume $PWD:/project \
--env RUSTFLAGS='-C target-cpu=x86-64-v3' \
docker.io/library/ubuntu:18.04 sh -c \
"apt-get -y update ;\
apt-get -y install wget build-essential lld ;\
wget --no-verbose https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init ;\
chmod +x rustup-init ;\
./rustup-init -y ;\
/root/.cargo/bin/cargo build --manifest-path /project/Cargo.toml --release"Сборка для Windows:
podman run -it --rm \
--volume $PWD:/project \
--env RUSTFLAGS='-C target-cpu=x86-64-v3' \
docker.io/library/rust:1-bullseye sh -c \
"apt-get -y update ;\
apt-get -y install mingw-w64 ;\
rustup target add x86_64-pc-windows-gnu ;\
cargo build --manifest-path /project/Cargo.toml --release --target x86_64-pc-windows-gnu"