Avec Windows RT et les Windowsphones, Microsoft a toujours voulu mettre un pied (avec beaucoup de retard) dans le monde de de la mobilité.
Même si ce fut le précurseur des smartphone avec Windows CE (PDA, appareil embarqué, Dreamcast).
Après de multiples échecs, il revient avec des ordinateurs portables à base d’ARM.
Seul bémol, même si l’ OS est là, l’écosystème est pas vraiment au point notamment les jeux.
VLC for all
VLC est un projet ouvert qui bouge au grès des envies et des moyens.
Il est disponible sur beaucoup de plateformes et d’architectures, avec une grande palette de codec pour la version de base.
Ce qui sous entend qu’il existe donc des projets qui sont basé sur ses sources mais destiné à un quelques choses de spécifique.
Pêle-mêle, il existe une version pour IOS, Android, TV, Windows Store, vous trouverez tout la liste sur le Git de VLC.
Certaines des versions ne sont pas disponible publiquement, il faudra donc les compiler.
Compiler une application Linux pour Windows.
VLC a été créé pour Linux puis porté sur d’autre OS .
Donc il faudra soit passé par une machine virtuel comme “Oracle VM VirtualBox” + une distribution linux ou même le WSL de Microsoft.
Dans les deux cas il faudra un gros CPU et 30 Go d’espace.
Les manipulations ci-dessous ont été effectué sous WSL2/Debian.
Chaine d’outils et compilateur crossé
On va aborder ici la création d’un toolchain et d’un compilateur croisé.
Pour compiler sur une autre architecture que celle native, il vous faut un compilateur croisé.
Le projet LLVM MinGW, vous proposera un script pour en créer un simplement.
Si vous êtes sous Virtualbox, penser a activer le partage des cœurs du CPU dans les paramètres de la machine virtuel.
Pour linux, j’ai utilise la liste des paquets listés plus loin pour VLC.
Packages
sudo apt-get install libtool automake autoconf autopoint make gettext pkg-config git subversion cmake cvs zip nsis bzip2 yasm ragel ant default-jdk dos2unix gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-tools gcc g++ python3 bison flex wget gperf curl python3-distutils clang p7zip-full python3-mako
Compilation llvm-mingw
Version 13
git clone --single-branch --branch llvm-13.0 https://github.com/mstorsjo/llvm-mingw.git llvm-13.0-src
mkdir llvm-13.0 && cd llvm-13.0-src
./build-all.sh ../llvm-13.0/
./strip-llvm.sh ../llvm-13.0/
cd .. && rm -rf llvm-13.0-src
WSL2
La version actuelle “Ubuntu” est Ubuntu 24.04 LTS, elle n’est pas compatible avec la version 13 de llvm.
Lors de l’installation de la distribution Linux sur WSL, spécifié la version 22.04 via la commande:
wsl --install Ubuntu-22.04
Si vous rencontrez des erreurs type: fatal error: Killed signal terminated program cc1plus
Il s’agit d’un maque mémoire, on va donc augmenter la taille de la mémoire virtuel, la swap.
Pour résoudre le problème, il faut créer un fichier .wslconfig dans le répertoire C:\Users\[nom utilisateur]\.
L’encodage du texte doit être au format UTF-8.
Et contenir :
[wsl2] swap=24GB
VLC-4.x: Linux (X86 & ARM) et WSL2 (ARM)
M.A.J: WSL2 version ARM prend en charge l’émulation x86. Sur Linux, il vous faudra toujours passer par Wine HQ.
Le portage Windows de VLC 4.0 réclame l’utilitaire fxc2.exe, qui lui, fonctionne uniquement sur Windows x86 et x86_64.
Ca ne pose pas de problème avec WSL2 x86_64 mais sur Linux, il faudra passer par WineHQ (6.16 mini) mais les distribution Ubuntu et Debian fournissent une version 5.0.x/6.0.x
Pour ma part, j’ai compiler WineHQ avec la version GIT (7.14+).
Ça donne quelque chose comme ça
sudo apt-get install gcc-multilib g++-multilib#dépendence minimal.
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH #déclaration du toolchain.
git clone https://gitlab.winehq.org/wine/wine.git
cd wine
./configure --without-x --without-freetype
make -j8 #j étant le nombre de cœurs/taches du CPU.
alias wine="$HOME/wine/wine" #on créer un alias, pas besoin de l'installer. Ne fonctionne pas si un package "wine" est déjà installer.
configure.sh
Ce fichier configure les options lié au spécifié la plateforme visée, là Windows, il intègre quelques optimisations.
Si vous visez une compilation pour Windows ARM, il faut modifier quelques options du fichier.
--enable-sse & --enable-mmx
peuvent être supprimés, elles font référence à des jeux d’instructions x86.
Vous pouvez rajoutez:
--enable-neon
qui est un jeux d’ instructions ARM.
Dépôts GIT
Une fois vous environnent installer, Il faudra télécharger le projet via la commande Git
Pour télécharger la version de développement “4.0” :
git clone --single-branch --branch master https://code.videolan.org/videolan/vlc.git vlc-4.x
Pour télécharger la version de développement de la branche 3.0.x :
git clone --single-branch --branch 3.0.x https://code.videolan.org/videolan/vlc.git vlc-3.x
Exemple avec une version stable de la branche 3.0.x
git clone --single-branch --branch 3.0.17.4 https://code.videolan.org/videolan/vlc.git vlc-3.0.17.4
Mise à jour
Pour mettre à jour les dépôts GIT, entrer dans le répertoire et taper :
cd vlc-3.x
git pull
Compilation via le script (VLC 3 et VLC 4 Dev)
Maintenant, il reste à déclarer compilateur compiler plus haut, adapter le chemin du path en fonction de la location de celui-ci.
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH
Créer un répertoire de compilation avec la commande “mkdir” , par exemple:
mkdir -p vlc-3.x/build/
Puis y accéder ave la commande “cd”, par exemple:
cd vlc-3.x/build/
De là, il suffi de lancer le script de compilation.
sh ../extras/package/win32/build.sh "options"
Ci-dessous vous trouverez la liste des options du script:
OPTIONS:
-h Show some help
-r Release mode (default is debug)
-a Use the specified arch (default: x86_64, possible i686, aarch64, armv7)
-p Use a Prebuilt contrib package (speeds up compilation)
-c Create a Prebuilt contrib package (rarely used)
-l Enable translations (can be slow)
-i Create an Installer (n: nightly, r: release, u: unsigned release archive)
-s Interactive shell (get correct environment variables for build)
-b Enable breakpad support and send crash reports to this URL
-d Create PDB files during the build
-D Create PDB files during the build, map the VLC sources to
e.g.: -D c:/sources/vlc
-x Add extra checks when compiling
-u Use the Universal C Runtime (instead of msvcrt)
-w Restrict to Windows Store APIs
-z Build without GUI (libvlc only)
-o Install the built binaries in the absolute path
Donc
sh ../extras/package/win32/build.sh -a armv7 -r
Vous pouvez lancer la compilation du projet (et croiser les doigts ).
Vous trouverez un archive 7zip et Zip.
Vous pourrez compiler un installateur sur Arm32 (armv7).
“A la main” (VLC 3 et VLC 4 Dev)
Comme pour le script il est possible de sélectionner une architecture armv7 (Windows RT et Windows 11 ARM 64) ou aarch64 (uniquement Windows 11 ARM 64).
C’est la même méthode pour Windows 64 Intel ou AMD.
Dans cette exemple sera utilisé armv7/winarm32 avec l’argument “armv7-w64-mingw32, pour la version 64 bits il suffit d’utiliser l’argument “aarch64-w64-mingw32”.
Compilation des outils manquants
cd vlc-4.x/extras/tools/
./bootstrap
make
cd ../..
Compilation de librairies tierces
mkdir -p contrib/build && cd contrib/build
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH
../bootstrap --host=armv7-w64-mingw32
make fetch
make -j8 #nombre de CPU
cd ../..
Compilation de VLC
export PATH=$HOME/llvm-13.0/:$HOME/llvm-13.0/bin/:$PATH
export PKG_CONFIG_LIBDIR=$HOME/vlc-4.x/contrib/armv7-w64-mingw32/lib/pkgconfig
export PATH=$HOME/vlc-4.x/extras/tools/build/bin/:$PATH
./bootstrap
mkdir build && cd build
../configure --host=armv7-w64-mingw32
make
Pour créer un archive:
make package-win32-7zip
Pour créer un installateur:
make package-win32
Version UCRT (VLC 4 Dev)
Cette version utilise Universal C Runtime intégré depuis Windows 10, donc incompatible avec les versions ultérieur de Windows.
Les bibliothèques tiers se compilent avec LLVM version 13 et VLC avec LLVM version14.
En utilisant la commande suivant:sh ../extras/package/win32/build.sh -a aarch64 -x -u -S 0x0A000006 -i n
Mise à jour VLC 3.0.x (Flux RSS)
Mise à jour VLC 4.0.x (Flux RSS)
Crédit et liens
- VLC
- VirtualBox
- LLVM MinGW
- WSL (Sous-système Linux sur Windows)
- doc/BUILD-win32.md · master · VideoLAN / VLC · GitLab
Téléchargement
Le premier lancement de VLC peut être très long, c’est lié à l’antivirus intégré à Windows.
Stable: VLC 3.0.21 | Développement: VLC 3.0.21.1 | |
32bits | Installateur (7zip) Portable (7zip) | Installateur (7zip) Portable (7zip) |
64bits | Installateur (7zip) Portable (7zip) | Installateur (7zip) Portable (7zip) |
64bits UCRT | Installateur (7zip) Portable (7zip) | Installateur (7zip) Portable (7zip) |
VLC 4.0 (dev) 64bits
Un dépôt officiel est disponible pour la version 4.0:
Pingback: Les logiciels compatibles Windows ARM – Rwan – Blog & autres.
Pingback: ScummVM pour Windows ARM – Rwan – Blog & autres.
sur mon X elite, j’ai tout simplement installé msys2 et fait pacman -S mingw-w64-clang-aarch64-vlc . Ca a marché nicker j’ai vlc 3 en natif arm64.