crosscompile

This commit is contained in:
MeexReay 2025-02-10 10:36:44 +03:00
parent 5290d2d2e2
commit 4667b7349b
3 changed files with 66 additions and 0 deletions

16
.cargo/config.toml Normal file
View File

@ -0,0 +1,16 @@
[target.i686-unknown-linux-gnu]
linker = "i686-unknown-linux-gnu-gcc"
ar = "i686-unknown-linux-gnu-ar"
# [target.x86_64-unknown-linux-gnu]
# linker = "x86_64-unknown-linux-gnu-gcc"
# ar = "x86_64-unknown-linux-gnu-ar"
[target.i686-pc-windows-gnu]
linker = "i686-w64-mingw32-gcc"
ar = "i686-w64-mingw32-ar"
[target.x86_64-pc-windows-gnu]
linker = "x86_64-w64-mingw32-gcc"
ar = "x86_64-w64-mingw32-ar"

11
build_all.sh Normal file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
TARGETS=(
x86_64-unknown-linux-gnu
i686-unknown-linux-gnu
x86_64-pc-windows-gnu
i686-pc-windows-gnu
)
for TARGET in "${TARGETS[@]}"; do
cargo build --release --target "$TARGET"
echo "$TARGET" built
done

39
shell.nix Normal file
View File

@ -0,0 +1,39 @@
{ pkgs ? import <nixpkgs> {} }:
let
# Переопределение для mingw32
mingw32WithDwarf = pkgs.pkgsCross.mingw32.buildPackages.gcc.overrideAttrs (oldAttrs: {
configureFlags = [
"--disable-sjlj-exceptions"
"--enable-dwarf2"
];
});
in
pkgs.mkShell {
buildInputs = with pkgs; [
rustup
gcc_multi
pkg-config
zlib
openssl
# Добавляем кросс-компиляторы
pkgsCross.gnu32.buildPackages.gcc
pkgsCross.gnu32.buildPackages.binutils
pkgsCross.gnu64.buildPackages.gcc
pkgsCross.gnu64.buildPackages.binutils
# Переопределённый MinGW для 32-бит Windows
mingw32WithDwarf
# Необходимые библиотеки для Windows
pkgsCross.mingw32.windows.pthreads
pkgsCross.mingw32.windows.mcfgthreads
# 64-битный MinGW и необходимые библиотеки
pkgsCross.mingwW64.buildPackages.gcc
pkgsCross.mingwW64.windows.pthreads
pkgsCross.mingwW64.windows.mcfgthreads
];
}