Julia语言程序设计
上QQ阅读APP看书,第一时间看更新

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程序并不会是一件轻松愉快的事情,难免会遇到各种问题。所以笔者认为,除非开发需要,例如需要进行平台移植或其他特定情况,最好不要选择编译的安装方式。因篇幅所限,关于各个平台上的编译过程,本书不做过多赘述,有兴趣的读者可参见官方资料。