Engee 文档

窗户

本文档介绍如何在Windows上安装或构建和使用Julia。

有关Julia的更多一般信息,请参阅https://github.com/JuliaLang/julia/blob/master/README.md [主自述文件]或https://docs.julialang.org [文件]。

视窗一般资料

我们强烈建议使用现代终端应用程序运行Julia,特别是Windows终端,可以从https://aka.ms/terminal [微软商店]。

行结尾

在Julia中,文件只在二进制模式下使用。 与许多其他Windows程序不同,在将`\n`写入文件时,它将包含`\n`,而不是任何其他位模式。 这对应于其他操作系统中的行为。 如果您已安装Git For Windows,则假定Git系统配置为使用相同的约定,但是,这是一个可选要求。:

git config --global core.eol lf
git config --global core.autocrlf input

您还可以在`%USERPROFILE%\中添加或更改以下行。gitconfig’文件:

[core]
    eol = lf
    autocrlf = input

二进制文件的分发

有关在Windows中分发二进制文件的安装说明,请参阅https://julialang.org/downloads/platform/#windows …​

源代码分发

从Cygwin到MinGW的交叉编译

在Windows中从源代码编译Julia的推荐方法是从https://www.cygwin.com [Cygwin]使用通过Cygwin包管理器提供的MinGW-w64编译器版本。

  1. 下载并运行Cygwin安装程序https://cygwin.com/setup-x86.exe [32位]或https://cygwin.com/setup-x86_64.exe [64位系统]。 请注意:您可以使用Cygwin的32位或64位版本编译Julia的32位或64位版本。 在Cygwin的64位版本中,软件包集略小,但它们通常更具最新性。

    另外:可以通过运行以下命令跳过步骤2—​4:

    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

    将"<url>"替换为网站地址https://cygwin.com/mirrors.html 或者,首先手动运行安装,然后选择镜像。

  2. 选择将执行下载的安装位置和镜像。

  3. 在_Select Packages_步骤中,选择以下值。

    1. 在_evel_(开发)类别中:'cmake','pass:c[gcc-g++],'git,'make','patch`

    2. 在_Net_(网络)类别中:'curl'

    3. 在_Interpreters_(解释器)(或_Python_)类别中:'m4','python3'

    4. 在_Archive_(存档)类别中:'p7zip'

    5. 对于Julia的32位版本,以及_Devel_(开发)类别:'pass:c[mingw64-i686-gcc-g++]'和’mingw64-i686-gcc-fortran'

    6. 对于Julia的64位版本,以及_evel_(开发)类别:`pass:c[mingw64-x86_64-gcc-g++]`和`mingw64-x86_64-gcc-fortran'。

  4. 等待Cygwin安装完成,然后分别使用已安装的快捷方式_cygwin Terminal_(Cygwin终端)或_Cygwin64Terminal_(Cygwin64终端)启动环境。

  5. 从源代码构建Julia和依赖项。

    1. 获取Julia源代码

      git clone https://github.com/JuliaLang/julia.git
      cd julia

      委员会。 如果Git返回错误’error:cannot fork()for fetch-pack:Resource 暂时不可用`,添加’alias git="env PATH=/usr/bin git"` 到'~/。bashrc’并重新启动Cygwin。

    2. 在’Make’中设置`XC_HOST’变量。用户配置MinGW-w64交叉编译的文件

       echo 'XC*HOST = i686-w64-mingw32' > Make.user     # для 32-разрядной версии Julia
       # или
       echo 'XC*HOST = x86_64-w64-mingw32' > Make.user   # для 64-разрядной версии Julia
    3. 运行构建

       make -j 4       # Настройте количество потоков (4) в соответствии со средой сборки.
       make -j 4 debug # В результате создается файл julia-debug.exe
  6. 直接使用Julia可执行文件运行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  # сборка для Windows x86 в папке julia-win32
make -C julia-win64  # сборка для Windows x86-64 в папке julia-win64

link:@id Compiling-with-MinGW/MSYS2[使用MinGW/MSYS2编译]

https://www.msys2.org /[MSYS2]是Windows的软件分发和构建环境。

注意。 MSYS2需要Windows7或更高版本的*64位版本*。

  1. 安装和配置MSYS2。

    1. 下载并运行最新版本的安装程序https://github.com/msys2/msys2-installer/releases/latest [64位]分布。 安装程序将具有类似`msys2-x86_64-yyyymmdd的名称。exe'。

    2. 打开MSYS2外壳。 更新包数据库和基本包:

       pacman -Syu
    3. 退出并重新启动MSYS2。 更新其余的基本包:

       pacman -Syu
  2. 然后安装构建Julia所需的工具。:

     pacman -S cmake diffutils git m4 make patch tar p7zip curl python

    对于64位版本的Julia,请安装版本x86_64:

     pacman -S mingw-w64-x86_64-gcc

    对于Julia的32位版本,请安装i686版本。:

     pacman -S mingw-w64-i686-gcc
    1. MSYS2设置完成。 现在关闭("退出")MSYS2。 2壳。 使用预组装的依赖项构建Julia和依赖项。

    2. 打开一个新的https://www.msys2.org/docs/environments/#overview [MINGW64/MINGW32外壳]。 目前,您不能在同一时间使用mingw32和mingw64,因此如果您想构建版本x86_64和i686,则需要在每个环境中单独执行此操作。

    3. 克隆Julia源代码:

       git clone https://github.com/JuliaLang/julia.git
       cd julia
    4. 运行构建

       make -j$(nproc)

      !!! 注意"专业提示:在dir中构建"

       make O=julia-mingw-w64 configure
       echo 'ifeq ($(BUILDROOT),$(JULIAHOME))
           $(error "in-tree build disabled")
         endif' >> Make.user
       make -C julia-mingw-w64

link:@id Cross-compiling-from-Unix-(Linux/Mac/WSL)[从Unix(Linux,Mac,WSL)交叉编译]

您还可以使用mingw-w64交叉编译器从Linux、Mac或Windows子系统For Linux(WSL)构建Julia Windows版本。

首先,您需要确保系统中存在必要的依赖项。 您将需要wine(版本1.7.5或更高版本),系统编译器和一些加载器。 注意。 使用WSL时Cygwin安装可能会阻止此方法的执行。

在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
# 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(现在https://www.xquartz.org /[XQuartz])和https://www.macports.org/install.php [MacPorts]或https://brew.sh /[自制软件]。 然后运行命令’port install wine wget mingw-w64’或’brew install wine wget mingw-w64',视情况而定。

接下来,执行装配:

  1. 'git克隆https://github.com/JuliaLang/julia.git 朱莉娅-win32`

  2. 'cd朱莉娅-win32`

  3. '回声复盖XC_HOST=i686-w64-mingw32>>制作。用户`

  4. '制造`

  5. 'make win-extras'(在执行’make binary-dist’之前需要)

  6. 'make binary-dist’然后’make exe’创建Windows安装程序。

  7. 转移安装程序的julia-*。exe’到目标计算机。

为64位版本的Windows构建时,步骤将基本相同。 只需将`XC_HOST`中的`i686`替换为’x86_64’即可。 (注。 在Mac上,wine仅在32位模式下运行。)

在wine中调试交叉编译的构建

在交叉编译主机上调试交叉编译版本的Julia的最有效方法是安装Windows版本的GDB,并以通常的方式在wine环境中运行它。 可提供预组装包装https://packages.msys2.org /[作为MSYS2项目的一部分],应该工作。 除了GDB包之外,您可能还需要python和termcap包。 最后,从命令行运行时,GDB命令行可能不起作用。 要解决此问题,请在常规GDB调用之前添加`wineconsole'。

编译后

作为使用上述参数之一进行编译的结果,创建了一个基本的Julia构建,而无需在运行完整Julia二进制安装程序时启用的其他组件。 如果您需要这些组件,获取它们的最简单方法是通过运行命令`make win-extras`自己构建安装程序,然后是`make binary-dist`和`make exe'。 接下来,运行最终安装程序。

调试Windows构建

GDB冻结在Cygwin mintty

  • 在Windows控制台(cmd)中运行GDB。 GDB,GDB https://www.cygwin.com/ml/cygwin/2009-02/msg00531.html [可能无法正常工作]在mintty与应用程序不是为Cygwin环境设计的。 如有必要,您可以使用命令’cmd/c start’从mintty启动Windows控制台。

GDB未连接到所需的进程

  • 使用来自Windows任务管理器的PID或来自`ps`命令输出的`WINPID',而不是来自Unix风格的命令行程序(例如,pgrep)的PID。 如果默认情况下未在Windows任务管理器中显示PID列,则可能需要添加PID列。

GDB输出不正确的回溯

  • 当连接到Julia进程时,GDB可能不会连接到相应的线程。 使用’info threads’命令输出所有线程,使用`thread<threadno>`命令切换线程。

  • 请务必使用32位版本的GDB调试32位Julia构建,使用64位版本的GDB调试64位Julia构建。

构建过程很慢,消耗大量内存或冻结计算机。

  • 禁用Windows服务https://en.wikipedia.org/wiki/Windows_Vista_I/O_technologies#SuperFetch [Superfetch]和https://blogs.msdn.com/b/cjacks/archive/2011/11/22/managing-the-windows-7-program-compatibility-assistant-pca.aspx[程序兼容性助手],因为它是已知的,他们进行https://cygwin.com/ml/cygwin/2011-12/msg00058.html [虚构的互动]与MinGW/Cygwin。

    如上面的链接所示,通过单击任务管理器中的进程,可以找到"svchost"进程过度消耗内存的原因。exe’并通过选择’转到服务’选项。 一次关闭一个儿童服务,直到找到罪魁祸首。

  • 谨防来自https://cygwin.com/faq/faq.html#faq.using …​布罗达[布罗达名单]。 要识别与此类软件相关的冲突,您离不开工具。 https://technet.microsoft.com/en-us/sysinternals/dd535533 …​aspx[vmmap]。 使用vmmap,检查下载的DLL库列表以查找bash,mintty或用于构建的另一个持久进程。 实际上,任何不是来自Windows系统目录的DLL库都可能是BLOD冲突的原因。