Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Křížová kompilace je proces vytvoření spustitelného kódu pro jinou platformu než pro platformu, na které je kompilátor spuštěný. Rozdíl mezi platformou může být jiný operační systém nebo jiná architektura. Například kompilace pro Windows z Linuxu nebo Arm64 z x64. Rozdíl v Linuxu může být také mezi standardními implementacemi knihoven jazyka C – glibc (například Ubuntu Linux) nebo musl (například Alpine Linux).
Nativní AOT používá nástroje platformy (linkery) k propojení knihoven platforem (statické a dynamické) společně se spravovaným kódem zkompilovaným AOT do konečného spustitelného souboru. Dostupnost křížových propojení a statických/dynamických knihoven pro cílový systém omezuje páry operačního systému/architektury, které můžou křížově kompilovat.
Vzhledem k tomu, že neexistuje žádný standardizovaný způsob, jak získat nativní sadu macOS SDK pro použití ve Windows nebo Linuxu nebo sadě Windows SDK pro použití v systému Linux nebo macOS, nativní AOT nepodporuje kompilaci mezi operačními systémy. Kompilace mezi operačními systémy s nativní AOT vyžaduje určitou formu emulace, jako je virtuální počítač nebo Windows WSL.
Nativní AOT však má omezenou podporu pro kompilaci mezi architekturami . Pokud je nainstalovaná potřebná nativní sada nástrojů, je možné překládání křížově mezi architekturami x64 a arm64 na systémech Windows, Mac nebo Linux.
Windows
Křížové kompilace z x64 Windows do ARM64 Windows nebo naopak funguje, pokud jsou nainstalované příslušné nástroje sestavení VS 2022 C++. Pokud chcete cílit na ARM64, ujistěte se, že je nainstalovaná komponenta sady Visual Studio VS 2022 C++ ARM64/ARM64EC build tools (Nejnovější). Pokud chcete cílit na platformu x64, vyhledejte místo toho nástroje sestavení VS 2022 C++ x64/x86 (nejnovější).
Macintosh
MacOS poskytuje sady nástrojů x64 a arm64 ve výchozí instalaci XCode.
Operační systém Linux
Každá distribuce Linuxu má jiný systém pro instalaci nativních závislostí sady nástrojů. Projděte si dokumentaci k distribuci Linuxu a zjistěte potřebné kroky.
Mezi nezbytné závislosti patří:
- Příčný propojení nebo propojovací prvek, který je schopný emitovat pro cíl.
clangje jeden takový propojovač. - Cílově kompatibilní
objcopynebostrip, pokudStripSymbolsje pro váš projekt povolený. - Soubory objektů pro modul runtime jazyka C cílové architektury.
- Soubory objektů pro zlib pro cílovou architekturu
Pro kompilaci ubuntu linux-arm64 22.04 amd64 můžou stačit následující příkazy, i když to ubuntu nezdokumentuje ani nezaručuje:
sudo dpkg --add-architecture arm64
sudo bash -c 'cat > /etc/apt/sources.list.d/arm64.list <<EOF
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted universe multiverse
EOF'
sudo sed -i -e 's/deb http/deb [arch=amd64] http/g' /etc/apt/sources.list
sudo sed -i -e 's/deb mirror/deb [arch=amd64] mirror/g' /etc/apt/sources.list
sudo apt update
sudo apt install -y clang llvm binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu zlib1g-dev:arm64