Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La compilation croisée est un processus de création de code exécutable pour une plateforme autre que celle sur laquelle le compilateur s’exécute. La différence de plateforme peut être un système d’exploitation différent ou une architecture différente. Par exemple, la compilation pour Windows à partir de Linux ou pour Arm64 à partir de x64. Sur Linux, la différence peut également être entre les implémentations de bibliothèque C standard - glibc (par exemple, Ubuntu Linux) ou musl (par exemple, Alpine Linux).
Native AOT utilise des outils de plateforme (éditeurs de liens) pour lier des bibliothèques de plateforme (statiques et dynamiques) avec du code managé compilé par AOT dans le fichier exécutable final. La disponibilité des interconnecteurs et des bibliothèques statiques/dynamiques pour le système cible limite les paires système d’exploitation/architecture qui peuvent être compilées de manière croisée.
Étant donné qu’il n’existe aucun moyen standardisé d’obtenir le SDK macOS natif à utiliser sur Windows/Linux, ou le Kit de développement logiciel (SDK) Windows pour une utilisation sur Linux/macOS, l’AOT natif ne prend pas en charge la compilation entre systèmes d’exploitation. La compilation entre systèmes d’exploitation avec AOT natif nécessite une forme d’émulation, comme une machine virtuelle ou Windows WSL.
Toutefois, L’AOT natif a une prise en charge limitée de la compilation entre architectures . Tant que la chaîne d’outils native nécessaire est installée, il est possible de cross-compiler entre les architectures x64
et arm64
sur Windows, Mac ou Linux.
Fenêtres
La compilation croisée de x64 Windows vers ARM64 Windows ou vice versa fonctionne aussi longtemps que les outils de génération VS 2022 C++ appropriés sont installés. Pour cibler ARM64, vérifiez que le composant Visual Studio « VS 2022 C++ ARM64/ARM64EC outils de génération (dernière version) » est installé. Pour cibler x64, recherchez « Outils de génération x64/x86 C++ VS 2022 (Dernière version) » à la place.
Mac
MacOS fournit les chaînes d’outils x64 et amd64 dans l’installation XCode par défaut.
Linux
Chaque distribution Linux dispose d’un système différent pour installer des dépendances de chaîne d’outils natives. Consultez la documentation de votre distribution Linux pour déterminer les étapes nécessaires.
Les dépendances nécessaires sont les suivantes :
- Un éditeur de liens croisés ou un éditeur de liens qui peut émettre pour la cible.
clang
est un tel éditeur de liens. - Un
objcopy
oustrip
compatible avec la cible, siStripSymbols
est activé pour votre projet. - Fichiers objet pour le runtime C de l’architecture cible.
- Fichiers objet pour zlib pour l’architecture cible.
Les commandes suivantes peuvent suffire pour la compilation sur linux-arm64
Ubuntu 22.04 amd64, bien que cela ne soit pas documenté ou garanti par Ubuntu :
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