我正在尝试使用“mpif90”在Fedora 21中编译一些代码。

首先我用'yum'安装openmpi:

[root@localhost Inversion]# yum install openmpi
Loaded plugins: langpacks
Package openmpi-1.8.3-2.fc21.x86_64 already installed and latest version
Nothing to do

但是,当我使用“make”进行编译时,它不起作用:
[root@localhost Inversion]# make all
mpif90 -O3 -c src/dispersion.f90
make: mpif90: Command not found
Makefile:18: recipe for target 'obj' failed
make: *** [obj] Error 127

如您所见,我已经下载了openmpi软件包,但无法编译。

最佳答案

由于尚未加载必要的模块,因此无法编译。

您需要加载环境模块,这是Fedora在使用以下方式安装openmpi时如何处理它:

dnf install openmpi

(在Fedora 25中)

只需执行以下步骤:
  • 在您的终端中,执行以下操作:
    module avail
    

    您应该看到类似以下的输出:
    --------------------- /usr/share/Modules/modulefiles ----------------------
    dot         module-git  module-info modules     null        use.own
    ---------------------------- /etc/modulefiles -----------------------------
    mpi/openmpi-x86_64
    

    注意,有mpi/openmpi-x86_64模块可供您“加载”。
  • 在您的终端中,您只需执行以下操作:
    module load mpi/openmpi-x86_64
    
  • 现在您可以访问所有的mpi编译器,例如mpif90mpic++等。您可以看到编译器二进制文件存储在:/usr/lib64/openmpi/bin中:
    $ which mpif90
    

    并且您看到的输出是:
    /usr/lib64/openmpi/bin/mpif90
    
  • 10-01 11:19