Windows
Ce fichier décrit comment installer, ou construire, et utiliser Julia sur Windows.
Pour plus d'informations générales sur Julia, veuillez consulter le main README ou le documentation.
General Information for Windows
Nous recommandons vivement d'exécuter Julia en utilisant une application de terminal moderne, en particulier Windows Terminal, qui peut être installé à partir de Microsoft Store.
Line endings
Julia utilise exclusivement des fichiers en mode binaire. Contrairement à de nombreux autres programmes Windows, si vous écrivez \n
dans un fichier, vous obtenez un \n
dans le fichier, et non un autre motif de bits. Cela correspond au comportement observé par d'autres systèmes d'exploitation. Si vous avez installé Git pour Windows, il est suggéré, mais pas obligatoire, de configurer votre Git système pour utiliser la même convention :
git config --global core.eol lf
git config --global core.autocrlf input
ou modifiez %USERPROFILE%\.gitconfig
et ajoutez/modifiez les lignes :
[core]
eol = lf
autocrlf = input
Binary distribution
Pour les notes d'installation de la distribution binaire sur Windows, veuillez consulter les instructions à https://julialang.org/downloads/platform/#windows.
Source distribution
Cygwin-to-MinGW cross-compiling
La méthode recommandée pour compiler Julia à partir des sources sur Windows est de le faire par cross-compilation depuis Cygwin, en utilisant les versions des compilateurs MinGW-w64 disponibles via le gestionnaire de paquets de Cygwin.
Téléchargez et exécutez le programme d'installation de Cygwin pour 32 bit ou 64 bit. Notez que vous pouvez compiler soit Julia 32 bits soit 64 bits à partir de Cygwin 32 bits ou 64 bits. Cygwin 64 bits a une sélection de paquets légèrement plus petite mais souvent plus à jour.
Avancé : vous pouvez sauter les étapes 2 à 4 en exécutant :
setup-x86_64.exe -s <url> -q -P cmake,gcc-g++,git,make,patch,curl,m4,python3,p7zip,mingw64-i686-gcc-g++,mingw64-i686-gcc-fortran,mingw64-x86_64-gcc-g++,mingw64-x86_64-gcc-fortran
remplacer
<url>
par un site de https://cygwin.com/mirrors.html ou exécutez d'abord la configuration manuellement et sélectionnez un miroir.Sélectionnez l'emplacement d'installation et un miroir à partir duquel télécharger.
À l'étape Sélectionner les paquets, sélectionnez ce qui suit :
- De la catégorie Devel :
cmake
,gcc-g++
,git
,make
,patch
- De la catégorie Net :
curl
- De la catégorie Interpréteurs (ou Python) :
m4
,python3
- De la catégorie Archive :
p7zip
- Pour Julia 32 bits, et également de la catégorie Devel :
mingw64-i686-gcc-g++
etmingw64-i686-gcc-fortran
- Pour Julia 64 bits, et également de la catégorie Devel :
mingw64-x86_64-gcc-g++
etmingw64-x86_64-gcc-fortran
- De la catégorie Devel :
Laissez l'installation de Cygwin se terminer, puis démarrez à partir du raccourci installé 'Cygwin Terminal', ou 'Cygwin64 Terminal', respectivement.
Construire Julia et ses dépendances à partir des sources :
Obtenez les sources de Julia
git clone https://github.com/JuliaLang/julia.git cd julia
Astuce : Si vous obtenez une
erreur : impossible de fork() pour fetch-pack : Ressource temporairement indisponible
de git, ajoutezalias git="env PATH=/usr/bin git"
à~/.bashrc
et redémarrez Cygwin.Définissez la variable
XC_HOST
dansMake.user
pour indiquer la compilation croisée MinGW-w64.echo 'XC_HOST = i686-w64-mingw32' > Make.user # for 32 bit Julia # or echo 'XC_HOST = x86_64-w64-mingw32' > Make.user # for 64 bit Julia
Commencer la construction
make -j 4 # Adjust the number of threads (4) to match your build environment. make -j 4 debug # This builds julia-debug.exe
Exécutez Julia en utilisant directement les exécutables Julia
usr/bin/julia.exe usr/bin/julia-debug.exe
make O=julia-win32 configure
make O=julia-win64 configure
echo 'XC_HOST = i686-w64-mingw32' > julia-win32/Make.user
echo 'XC_HOST = x86_64-w64-mingw32' > julia-win64/Make.user
echo 'ifeq ($(BUILDROOT),$(JULIAHOME))
$(error "in-tree build disabled")
endif' >> Make.user
make -C julia-win32 # build for Windows x86 in julia-win32 folder
make -C julia-win64 # build for Windows x86-64 in julia-win64 folder
Compiling with MinGW/MSYS2
MSYS2 est un environnement de distribution et de construction de logiciels pour Windows.
Remarque : MSYS2 nécessite Windows 7 64 bits ou une version plus récente.
Installer et configurer MSYS2.
Téléchargez et exécutez le dernier installateur pour la distribution 64-bit. L'installateur aura un nom comme
msys2-x86_64-yyyymmdd.exe
.Ouvrez le shell MSYS2. Mettez à jour la base de données des paquets et les paquets de base :
pacman -Syu
Quitter et redémarrer MSYS2. Mettre à jour le reste des paquets de base :
pacman -Syu
Ensuite, installez les outils nécessaires pour construire julia :
pacman -S cmake diffutils git m4 make patch tar p7zip curl python
Pour Julia 64 bits, installez la version x86_64 :
pacman -S mingw-w64-x86_64-gcc
Pour Julia 32 bits, installez la version i686 :
pacman -S mingw-w64-i686-gcc
La configuration de MSYS2 est terminée. Maintenant,
quitter
le shell MSYS2.
Construire Julia et ses dépendances avec des dépendances pré-construites.
Ouvrez un nouveau MINGW64/MINGW32 shell. Actuellement, nous ne pouvons pas utiliser à la fois mingw32 et mingw64, donc si vous souhaitez construire les versions x86_64 et i686, vous devrez les construire dans chaque environnement séparément.
Clonez les sources de Julia :
git clone https://github.com/JuliaLang/julia.git cd julia
Commencer la construction
make -j$(nproc)
make O=julia-mingw-w64 configure
echo 'ifeq ($(BUILDROOT),$(JULIAHOME))
$(error "in-tree build disabled")
endif' >> Make.user
make -C julia-mingw-w64
Cross-compiling from Unix (Linux/Mac/WSL)
Vous pouvez également utiliser des compilateurs croisés MinGW-w64 pour construire une version Windows de Julia à partir de Linux, Mac ou du Sous-système Windows pour Linux (WSL).
Tout d'abord, vous devez vous assurer que votre système dispose des dépendances requises. Nous avons besoin de wine (>=1.7.5), d'un compilateur système et de quelques téléchargeurs. Remarque : une installation de Cygwin pourrait interférer avec cette méthode si vous utilisez WSL.
Sur Ubuntu (sur d'autres systèmes Linux, les noms des dépendances sont susceptibles d'être similaires) :
apt-get install wine-stable gcc wget p7zip-full winbind mingw-w64 gfortran-mingw-w64
dpkg --add-architecture i386 && apt-get update && apt-get install wine32 # add sudo to each if needed
# switch all of the following to their "-posix" variants (interactively):
for pkg in i686-w64-mingw32-g++ i686-w64-mingw32-gcc i686-w64-mingw32-gfortran x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc x86_64-w64-mingw32-gfortran; do
sudo update-alternatives --config $pkg
done
Sur Mac : Installez XCode, les outils en ligne de commande XCode, X11 (maintenant XQuartz), et MacPorts ou Homebrew. Ensuite, exécutez port install wine wget mingw-w64
, ou brew install wine wget mingw-w64
, selon le cas.
Puis exécutez la construction :
git clone https://github.com/JuliaLang/julia.git julia-win32
cd julia-win32
echo override XC_HOST = i686-w64-mingw32 >> Make.user
faire
make win-extras
(Nécessaire avant d'exécutermake binary-dist
)make binary-dist
puismake exe
pour créer l'installateur Windows.- déplacez l'installateur
julia-*.exe
vers la machine cible
Si vous construisez pour Windows 64 bits, les étapes sont essentiellement les mêmes. Il suffit de remplacer i686
dans XC_HOST
par x86_64
. (Remarque : sur Mac, wine ne fonctionne qu'en mode 32 bits).
Debugging a cross-compiled build under wine
La manière la plus efficace de déboguer une version cross-compilée de Julia sur l'hôte de cross-compilation est d'installer une version Windows de GDB et de l'exécuter sous wine comme d'habitude. Les paquets préconstruits disponibles as part of the MSYS2 project sont connus pour fonctionner. En plus du paquet GDB, vous pourriez également avoir besoin des paquets python et termcap. Enfin, l'invite de GDB peut ne pas fonctionner lorsqu'elle est lancée depuis la ligne de commande. Cela peut être contourné en préfixant wineconsole
à l'invocation régulière de GDB.
After compiling
Compiler en utilisant l'une des options ci-dessus crée une version de base de Julia, mais pas certains composants supplémentaires qui sont inclus si vous exécutez l'installateur binaire complet de Julia. Si vous avez besoin de ces composants, le moyen le plus simple de les obtenir est de construire l'installateur vous-même en utilisant make win-extras
suivi de make binary-dist
et make exe
. Ensuite, exécutez l'installateur résultant.
Windows Build Debugging
GDB hangs with Cygwin mintty
- Exécutez GDB sous la console Windows (cmd) à la place. GDB may not function properly sous mintty avec des applications non-Cygwin. Vous pouvez utiliser
cmd /c start
pour démarrer la console Windows depuis mintty si nécessaire.
GDB not attaching to the right process
- Utilisez le PID du gestionnaire de tâches Windows ou
WINPID
de la commandeps
au lieu du PID des outils de ligne de commande de style Unix (par exemple,pgrep
). Vous devrez peut-être ajouter la colonne PID si elle n'est pas affichée par défaut dans le gestionnaire de tâches Windows.
GDB not showing the right backtrace
- Lorsque vous vous attachez au processus julia, GDB peut ne pas s'attacher au bon thread. Utilisez la commande
info threads
pour afficher tous les threads etthread <threadno>
pour changer de thread. - Assurez-vous d'utiliser une version 32 bits de GDB pour déboguer une version 32 bits de Julia, ou une version 64 bits de GDB pour déboguer une version 64 bits de Julia.
Build process is slow/eats memory/hangs my computer
Désactivez les services Windows Superfetch et Program Compatibility Assistant, car ils sont connus pour avoir spurious interactions avec MinGW/Cygwin.
Comme mentionné dans le lien ci-dessus : une utilisation excessive de la mémoire par
svchost
peut être examinée dans le Gestionnaire des tâches en cliquant sur le processussvchost.exe
à forte consommation de mémoire et en sélectionnantAller aux services
. Désactivez les services enfants un par un jusqu'à ce qu'un coupable soit trouvé.Attention à BLODA. L'outil vmmap est indispensable pour identifier de tels conflits logiciels. Utilisez vmmap pour inspecter la liste des DLL chargées pour bash, mintty ou un autre processus persistant utilisé pour conduire la construction. Essentiellement, toute DLL en dehors du répertoire système Windows est un potentiel BLODA.