1.2.2 编译安装
如果想通过源码编译的方式安装Julia程序,在确定这么做之前,我们先了解一下Julia代码所依赖的第三方库,列举如下:
·LLVM(6.0)编译器基础库。
·FemtoLisp编译器前端。
·libuv高性能事件IO库。
·OpenLibm以libm为基础的基本数学函数库。
·DSFMT随机数生成库。
·OpenBLAS线性代数BLAS加速库。
·LAPACK(>=3.5)线性代数求解及特征值求解等加速库。
·Intel MKL(可选)可用于替代OpenBLAS及LAPACK库。
·SuiteSparse(>=4.1)基于稀疏矩阵的线性代数库。
·ARPACK大稀疏特征值问题的求解库。
·PCRE(>=10.00)与Perl兼容的正则表达式库。
·GMP(>=5.0)GNU多精度算术库,用于支持BigInt类型。
·MPFR(>=4.0)GNU多精度浮点库,用于支持BigFloat类型。
·libgit2(>=0.23)版本管理工具Git操作库,用于包管理。
·curl(>=7.50)提供下载及代理支持,用于包管理。
·libssh2(>=1.7)支持SSH通道。
·mbedtls(>=2.2)加密与TLS支持。
·utf8proc(>=2.1)UTF-8编码支持。
·libosxunwind程序调用链(call-chain)支持。
这些众多的依赖库会在编译时自动下载,并优先编译。此过程能否顺利,与系统环境、编译环境等都有关系。此外,在编译时,还需要多种编译工具的支持,包括:
·GNU make文件依赖构建。
·gcc&g++(>=4.7)或Clang(>=3.1,OS X系统的Xcode 4.3.3)C/C++编译与链接工具链。
·libatomic原子操作库。
·python(>=2.7)用于构建LLVM。
·gfortran编译链接Fortran库。
·perl对库的头文件进行处理。
·wget、curl或fetch(FreeBSD)用于下载外部库。
·m4用于构建GMP。
·awk Makefiles处理工具。
·patch源代码文件处理。
·cmake(>=3.4.3)及pkg-config用于构建libgit2库。
除了要做上述这些诸多的环境准备,还需对一些选项进行恰当的配置。而且,对于Windows平台,还需要安装Cygwin环境及其中的MinGW-w64编译器工具链。
可见,从源码编译Julia程序并不会是一件轻松愉快的事情,难免会遇到各种问题。所以笔者认为,除非开发需要,例如需要进行平台移植或其他特定情况,最好不要选择编译的安装方式。因篇幅所限,关于各个平台上的编译过程,本书不做过多赘述,有兴趣的读者可参见官方资料。