Compiler Ygégé depuis les sources
Ce guide explique comment compiler Ygégé depuis les sources sur différentes plateformes.
Prérequis
Toutes les plateformes
- Rust (toolchain stable)
- Git
Dépendances spécifiques par plateforme
Linux (Debian/Ubuntu)
sudo apt-get update
sudo apt-get install -y build-essential cmake perl pkg-config libclang-dev
Windows
Installez les éléments suivants via Chocolatey :
choco install cmake strawberryperl pkgconfiglite llvm nasm -y
Ou téléchargez manuellement :
macOS
brew install cmake pkg-config llvm
Compilation
Compilation standard
# Cloner le dépôt
git clone https://github.com/UwUDev/ygege.git
cd ygege
# Compiler en mode release
cargo build --release
# Le binaire sera dans : target/release/ygege (ou ygege.exe sur Windows)
Avec informations de build
Pour inclure les informations de commit, date et branche :
# Linux/macOS
BUILD_COMMIT=$(git rev-parse HEAD) \
BUILD_DATE=$(git log -1 --pretty=%ct) \
BUILD_BRANCH=$(git rev-parse --abbrev-ref HEAD) \
cargo build --release
# Windows (PowerShell)
$env:BUILD_COMMIT = git rev-parse HEAD
$env:BUILD_DATE = git log -1 --pretty=%ct
$env:BUILD_BRANCH = git rev-parse --abbrev-ref HEAD
cargo build --release
Cross-compilation (Linux uniquement)
Pour ARM64 (aarch64)
# Installer les outils de cross-compilation
sudo apt-get install -y crossbuild-essential-arm64
# Ajouter la cible Rust
rustup target add aarch64-unknown-linux-gnu
# Compiler
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
export CFLAGS_aarch64_unknown_linux_gnu=-D__ARM_ARCH=8
cargo build --release --target=aarch64-unknown-linux-gnu
Pour ARMv7
# Installer les outils de cross-compilation
sudo apt-get install -y crossbuild-essential-armhf
# Ajouter la cible Rust
rustup target add armv7-unknown-linux-gnueabihf
# Compiler
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc
cargo build --release --target=armv7-unknown-linux-gnueabihf
Pour i686 (32-bit)
# Installer les outils de cross-compilation
sudo apt-get install -y crossbuild-essential-i386
# Ajouter la cible Rust
rustup target add i686-unknown-linux-gnu
# Compiler
export CC=i686-linux-gnu-gcc
export CXX=i686-linux-gnu-g++
export CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER=i686-linux-gnu-gcc
cargo build --release --target=i686-unknown-linux-gnu
Optimisation de la taille du binaire
Utilisation de la compression UPX
# Installer UPX
# Linux (Debian/Ubuntu)
sudo apt-get install upx-ucl
# macOS
brew install upx
# Windows
choco install upx
# Compresser le binaire
upx --best --lzma target/release/ygege
Linkage statique (Windows)
Pour des exécutables Windows autonomes sans dépendances runtime :
$env:RUSTFLAGS = "-C target-feature=+crt-static"
cargo build --release
Build Docker
Build local
# Build pour la plateforme actuelle uniquement (plus rapide)
docker build -f docker/Dockerfile -t ygege:local .
# Build multi-plateforme (nécessite Docker Buildx)
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f docker/Dockerfile \
-t ygege:latest \
--load \
.
Avec arguments de build
docker build \
-f docker/Dockerfile \
--build-arg BUILD_COMMIT=$(git rev-parse HEAD) \
--build-arg BUILD_DATE=$(date -u +%s) \
--build-arg BUILD_BRANCH=$(git branch --show-current) \
-t ygege:latest \
.
Exécution du binaire
Après la compilation, vous pouvez exécuter Ygégé :
# Afficher la version
./target/release/ygege --version
# Exécuter avec les paramètres par défaut (voir README.md pour la configuration)
./target/release/ygege
Dépannage
Problèmes courants
Dépendances manquantes lors de la compilation
Assurez-vous que tous les prérequis spécifiques à votre plateforme sont installés. Les messages d'erreur indiquent généralement quelle bibliothèque manque.
Échecs de cross-compilation avec boring-sys2
La dépendance BoringSSL peut être difficile à cross-compiler. Si vous rencontrez des problèmes :
- Vérifiez que toutes les toolchains de cross-compilation sont correctement installées
- Vérifiez que les variables d'environnement sont correctement définies
- Envisagez d'utiliser Docker pour les builds multi-plateformes à la place
Erreurs de mémoire insuffisante
La compilation Rust peut être gourmande en mémoire. Essayez :
# Réduire les jobs parallèles
cargo build --release -j 2
# Ou compiler par morceaux en désactivant la compilation incrémentale
export CARGO_INCREMENTAL=0
cargo build --release
Windows: link.exe introuvable
Installez Visual Studio Build Tools avec la charge de travail C++.
Conseils de performance de build
-
Activer la compilation incrémentale (builds de développement) :
export CARGO_INCREMENTAL=1 -
Utiliser
sccacheoucargo-cachepour la mise en cache :cargo install sccache
export RUSTC_WRAPPER=sccache -
Builds parallèles : Cargo compile en parallèle par défaut. Ajustez avec :
cargo build -j <nombre_de_cœurs>
Builds CI/CD
Des builds officiels sont automatiquement créés par GitHub Actions pour chaque release :
- Linux : x86_64, i686, aarch64, armv7
- Windows : x86_64, i686
- macOS : x86_64 (Intel), aarch64 (Apple Silicon)
- Docker : linux/amd64, linux/arm64
Consultez la page Releases pour les binaires pré-compilés.