Windows
Этот файл описывает, как установить или собрать и использовать Julia на Windows.
Для получения более общей информации о Julia, пожалуйста, смотрите main README или documentation.
General Information for Windows
Мы настоятельно рекомендуем запускать Julia с использованием современного терминального приложения, в частности Windows Terminal, который можно установить по адресу Microsoft Store.
Line endings
Джулия использует файлы в двоичном режиме исключительно. В отличие от многих других программ Windows, если вы запишите \n
в файл, вы получите \n
в файле, а не какой-то другой битовый шаблон. Это соответствует поведению, наблюдаемому в других операционных системах. Если вы установили Git для Windows, рекомендуется, но не обязательно, настроить ваш системный Git на использование той же конвенции:
git config --global core.eol lf
git config --global core.autocrlf input
или отредактируйте %USERPROFILE%\.gitconfig
и добавьте/измените строки:
[core]
eol = lf
autocrlf = input
Binary distribution
Для заметок по установке бинарного дистрибутива на Windows, пожалуйста, смотрите инструкции по адресу https://julialang.org/downloads/platform/#windows.
Source distribution
Cygwin-to-MinGW cross-compiling
Рекомендуемый способ компиляции Julia из исходников на Windows - это кросс-компиляция из Cygwin, используя версии компиляторов MinGW-w64, доступные через менеджер пакетов Cygwin.
Скачайте и запустите установку Cygwin для 32 bit или 64 bit. Обратите внимание, что вы можете компилировать как 32-битную, так и 64-битную версию Julia как из 32-битного, так и из 64-битного Cygwin. 64-битный Cygwin имеет немного меньший, но часто более актуальный выбор пакетов.
Расширенный: вы можете пропустить шаги 2-4, запустив:
sh 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
replacing
<url>
with a site from https://cygwin.com/mirrors.html or run setup manually first and select a mirror.Выберите место установки и зеркало для загрузки.
На шаге Выбор пакетов выберите следующее:
- Из категории Devel:
cmake
,gcc-g++
,git
,make
,patch
- Из категории Сеть:
curl
- Из категории Интерпретаторы (или Python):
m4
,python3
- Из категории Archive:
p7zip
- Для 32-битной Julia, а также из категории Devel:
mingw64-i686-gcc-g++
иmingw64-i686-gcc-fortran
- Для 64-битного Julia, а также из категории Devel:
mingw64-x86_64-gcc-g++
иmingw64-x86_64-gcc-fortran
- Из категории Devel:
Позвольте установке Cygwin завершиться, затем начните с установленного ярлыка 'Cygwin Terminal', или 'Cygwin64 Terminal', соответственно.
Соберите Julia и её зависимости из исходников:
Получите источники Julia
sh git clone https://github.com/JuliaLang/julia.git cd julia
Совет: Если вы получили
error: cannot fork() for fetch-pack: Resource temporarily unavailable
от git, добавьтеalias git="env PATH=/usr/bin git"
в~/.bashrc
и перезапустите Cygwin.Установите переменную
XC_HOST
вMake.user
, чтобы указать на кросс-компиляцию MinGW-w64.```sh echo 'XC_HOST = i686-w64-mingw32' > Make.user # for 32 bit Julia
or
echo 'XCHOST = x8664-w64-mingw32' > Make.user # for 64 bit Julia ```
Начать сборку
sh make -j 4 # Adjust the number of threads (4) to match your build environment. make -j 4 debug # This builds julia-debug.exe
Запустите Julia, используя исполняемые файлы Julia напрямую
sh 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 является средой распространения и сборки программного обеспечения для Windows.
Примечание: MSYS2 требует 64-битную версию Windows 7 или новее.
Установите и настройте MSYS2.
Скачайте и запустите последний установщик для дистрибутива 64-bit. Установщик будет иметь имя, похожее на
msys2-x86_64-yyyymmdd.exe
.Откройте оболочку MSYS2. Обновите базу данных пакетов и базовые пакеты:
pacman -Syu
Выйдите и перезапустите MSYS2. Обновите остальные базовые пакеты:
pacman -Syu
Затем установите инструменты, необходимые для сборки julia:
pacman -S cmake diffutils git m4 make patch tar p7zip curl python
Для 64-битной версии Julia установите версию x86_64:
pacman -S mingw-w64-x86_64-gcc
Для 32-битной версии Julia установите версию i686:
pacman -S mingw-w64-i686-gcc
Конфигурация MSYS2 завершена. Теперь введите
exit
для выхода из оболочки MSYS2.
Соберите Julia и её зависимости с предустановленными зависимостями.
Откройте новый MINGW64/MINGW32 shell. В настоящее время мы не можем использовать как mingw32, так и mingw64, поэтому, если вы хотите собрать версии x86_64 и i686, вам нужно будет собирать их в каждой среде отдельно.
Клонируйте исходники Julia:
git clone https://github.com/JuliaLang/julia.git cd julia
Начать сборку
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)
Вы также можете использовать кросс-компиляторы MinGW-w64 для сборки версии Julia для Windows из Linux, Mac или Подсистемы Windows для Linux (WSL).
Сначала вам нужно убедиться, что в вашей системе установлены необходимые зависимости. Нам нужен wine (>=1.7.5), системный компилятор и несколько загрузчиков. Примечание: установка Cygwin может помешать этому методу, если используется WSL.
На Ubuntu (в других системах Linux имена зависимостей, вероятно, будут похожи):
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
На Mac: Установите XCode, инструменты командной строки XCode, X11 (теперь XQuartz), и MacPorts или Homebrew. Затем выполните port install wine wget mingw-w64
, или brew install wine wget mingw-w64
, в зависимости от ситуации.
Затем выполните сборку:
git clone https://github.com/JuliaLang/julia.git julia-win32
cd julia-win32
echo override XC_HOST = i686-w64-mingw32 >> Make.user
make
make win-extras
(Необходимо перед запускомmake binary-dist
)make binary-dist
, а затемmake exe
, чтобы создать установщик для Windows.- переместите установщик
julia-*.exe
на целевую машину
Если вы разрабатываете для 64-битной Windows, шаги в основном те же. Просто замените i686
в XC_HOST
на x86_64
. (Примечание: на Mac wine работает только в 32-битном режиме).
Debugging a cross-compiled build under wine
Наиболее эффективный способ отладки кросс-компилированной версии Julia на хосте кросс-компиляции — установить версию GDB для Windows и запускать её под wine, как обычно. Предварительно собранные пакеты, доступные as part of the MSYS2 project, известны своей работоспособностью. Кроме пакета GDB, вам также могут понадобиться пакеты python и termcap. Наконец, приглашение GDB может не работать при запуске из командной строки. Это можно обойти, добавив wineconsole
перед обычным вызовом GDB.
After compiling
Компиляция с использованием одного из вышеперечисленных вариантов создает базовую сборку Julia, но не включает некоторые дополнительные компоненты, которые присутствуют, если вы запускаете полный установщик бинарного файла Julia. Если вам нужны эти компоненты, самый простой способ их получить — это собрать установщик самостоятельно, используя make win-extras
, затем make binary-dist
и make exe
. Затем запустите полученный установщик.
Windows Build Debugging
GDB hangs with Cygwin mintty
- Запустите GDB в консоли Windows (cmd) вместо этого. GDB may not function properly под mintty с не-Cygwin приложениями. Вы можете использовать
cmd /c start
, чтобы запустить консоль Windows из mintty, если это необходимо.
GDB not attaching to the right process
- Используйте PID из диспетчера задач Windows или
WINPID
из командыps
, вместо PID из инструментов командной строки в стиле Unix (например,pgrep
). Возможно, вам потребуется добавить столбец PID, если он не отображается по умолчанию в диспетчере задач Windows.
GDB not showing the right backtrace
- При присоединении к процессу julia GDB может не присоединяться к правильному потоку. Используйте команду
info threads
, чтобы показать все потоки, иthread <threadno>
, чтобы переключиться между потоками. - Убедитесь, что вы используете 32-битную версию GDB для отладки 32-битной сборки Julia или 64-битную версию GDB для отладки 64-битной сборки Julia.
Build process is slow/eats memory/hangs my computer
Отключите службы Windows Superfetch и Program Compatibility Assistant, так как известно, что они имеют spurious interactions с MinGW/Cygwin.
Как упомянуто в ссылке выше: чрезмерное использование памяти
svchost
может быть исследовано в Диспетчере задач, нажав на процессsvchost.exe
с высоким использованием памяти и выбравПерейти к службам
. Отключайте дочерние службы одну за другой, пока не будет найден виновник.Остерегайтесь BLODA. Инструмент vmmap незаменим для выявления таких конфликтов программного обеспечения. Используйте vmmap для проверки списка загруженных DLL для bash, mintty или другого постоянного процесса, используемого для сборки. По сути, любая DLL вне каталога системы Windows является потенциальным BLODA.