13.9. 手动安装GNU自动工具集

构建GNU Autotools的细节足够丰富,值得单独设立一个章节来说明。

注意

如上所述,只有当你从Git克隆构建Open MPI时才需要阅读/关注本节。安装Open MPI发行版压缩包的终端用户不需要安装GNU Autotools。

13.9.1. 使用包管理器

建议您使用Linux发行版的软件包管理器,或在macOS上使用Homebrew或MacPorts来安装最新版本的GNU Autoconf、Automake和Libtool。

如果无法完成,请继续阅读本节内容,了解如何手动构建和安装这些应用程序(即从互联网下载源代码并自行构建/安装)。

13.9.2. Autotools版本

开发者需要以下工具才能从代码仓库源码编译Open MPI(下载Open MPI压缩包的用户不需要这些工具——它们仅适用于从事Open MPI内部开发的开发者):

软件包

备注

网址

GNU m4

查看下方版本图表

https://ftp.gnu.org/gnu/m4/

GNU Autoconf

查看下方版本对照表

https://ftp.gnu.org/gnu/autoconf/

GNU Automake

请查看下方版本对照表

https://ftp.gnu.org/gnu/automake/

GNU Libtool

请查看下方版本对照表

https://ftp.gnu.org/gnu/libtool/

下表列出了用于制作每日快照和正式版本Open MPI压缩包的软件版本。其他版本的工具可能适用于某些(但几乎肯定不是所有)平台;下面列出的版本是我们已知能在极其广泛的平台和环境中正常工作的版本。

为了强调上述观点:Open MPI的核心开发者通常使用非常新版本的GNU工具。已知旧版GNU工具中存在一些错误,而Open MPI不再为这些错误提供补偿(例如,无限期支持古老版本Autoconf的补丁似乎没有意义)。

警告

如果不使用最新版本的GNU Autotools,您必定会遇到问题。

尽管如此,autogen.plconfigure.ac脚本往往较为宽松,强制执行的最低版本要求比下面列出的稍旧。这是因为这些较旧版本仍能在许多平台上构建可用的Open MPI——特别是使用GNU编译器的x86_64架构Linux系统——并且对于Linux发行版可能没有下面列出的版本那么新(但足够新以在其平台上构建可用版本)的开发者来说很方便。

需要明确的是:下面列出的版本是为了支持广泛的平台和环境,并用于制作每日构建和官方发布的压缩包。在构建Open MPI时,如果使用比下面列出版本更旧的版本,效果可能会有所不同——尤其是如果您不是在Linux x86_64平台上使用GNU编译器进行构建的情况下。

使用旧版本不受支持。如果遇到问题,请至少升级到以下列出的版本。

注意

您可能需要向右滚动查看以下表格。

Open MPI

M4

Autoconf

Automake

Libtool

Flex

Sphinx

v1.0.x

NA

2.58 - 2.59

1.7 - 1.9.6

1.5.16 - 1.5.22

2.5.4

NA

v1.1.x

NA

2.59

1.9.6

1.5.16 - 1.5.22

2.5.4

NA

v1.2.x

NA

2.59

1.9.6

1.5.22 - 2.1a

2.5.4

NA

v1.3.x

1.4.11

2.63

1.10.1

2.2.6b

2.5.4

NA

v1.4.x

1.4.11

2.63

1.10.3

2.2.6b

2.5.4

NA

v1.5.x 当x=0-4时

1.4.13

2.65

1.11.1

2.2.6b

2.5.4

不适用

v1.5.x 当x≥5时

1.4.16

2.68

1.11.3

2.4.2

2.5.35

不适用

v1.6.x

1.4.16

2.68

1.11.3

2.4.2

2.5.35

NA

v1.7.x

1.4.16

2.69

1.12.2

2.4.2

2.5.35

NA

v1.8.x

1.4.16

2.69

1.12.2

2.4.2

2.5.35

NA

v1.10.x

1.4.16

2.69

1.12.2

2.4.2

2.5.35

NA

v2.0.x 至 v4.y

1.4.17

2.69

1.15

2.4.6

2.5.35

不适用

v5.0.x

1.4.17

2.69

1.15

2.4.6

2.5.35

4.2.0

Git主分支

1.4.17

2.69

1.15

2.4.6

2.5.35

4.2.0

13.9.3. 检查您的版本

您可以通过以下方式检查已安装的Autotools版本:

shell$ m4 --version
shell$ autoconf --version
shell$ automake --version
shell$ libtoolize --version

13.9.4. 从源码安装GNU Autotools

注意

大多数操作系统包管理系统(包括MacOS上的Homebrew和MacPorts)都安装了足够新版本的GNU Autotools。通常只有在无法通过操作系统包管理系统安装时,才需要手动安装GNU Autotools。

GNU Autotools 的源代码可以从以下位置下载:

最简单的方式是一起下载/构建/安装这四种工具。但请注意,Open MPI对m4没有特定要求;这里列出它只是因为Autoconf需要GNU m4的最低版本。因此,您可能并不需要实际安装新版本的GNU m4。话虽如此,如果您感到困惑或不确定,只需随其他GNU Autotools一起安装最新的GNU m4,一切都会正常运行。

13.9.5. 构建与安装顺序

您必须按照以下顺序构建并安装GNU Autotools:

  1. m4

  2. Autoconf

  3. Automake

  4. Libtool

重要

必须将最后三个工具(Autoconf、Automake、Libtool)安装到同一个前缀目录中。这三个工具之间存在一定关联性,如果要一起使用,它们必须共享相同的安装前缀路径。

您可以将m4安装在任何位置,只要能在路径中找到它;将其安装在其他三个工具相同的路径前缀下可能较为方便。或者您也可以使用路径中任何足够新版本的m4。

警告

我们强烈建议您不要将新版本覆盖安装在操作系统自带的版本上。这可能导致系统其他功能出现问题。相反,请安装到$HOME/local/usr/local目录,或者您通常安装"本地"类软件的其他位置。

在操作时,请确保将安装目录添加到您的$PATH环境变量开头。例如,如果安装到$HOME/local目录,您可能需要编辑shell启动文件(.bashrc.cshrc.tcshrc等),添加类似以下内容:

# For bash/sh:
export PATH=$HOME/local/bin:$PATH
# For csh/tcsh:
set path = ($HOME/local/bin $path)

在配置/构建/安装这四个软件包之前,请确保设置好你的$PATH环境变量。

所有四个软件包只需两个简单命令即可构建和安装:

shell$ cd M4_DIRECTORY
shell$ ./configure --prefix=PREFIX
shell$ make all install

重要

如果您使用的shell不会自动重新索引$PATH(例如cshtcsh shell),请务必在安装下一个软件包之前运行rehash命令,以便下一个软件包能够找到刚安装的可执行文件。

# Make $PATH be re-indexed if necessary, e.g., via "rehash"
shell$ cd AUTOCONF_DIRECTORY
shell$ ./configure --prefix=PREFIX
shell$ make all install
# Make $PATH be re-indexed if necessary, e.g., via "rehash"
shell$ cd AUTOMAKE_DIRECTORY
shell$ ./configure --prefix=PREFIX
shell$ make all install
# Make $PATH be re-indexed if necessary, e.g., via "rehash"
shell$ cd LIBTOOL_DIRECTORY
shell$ ./configure --prefix=PREFIX
shell$ make all install