Mac M1用brew安装OpenMPI后编译代码找不到mpi.mod的问题
解决Mac M1上Fortran MPI代码编译问题
问题1:gfortran直接编译找不到mpi.mod
直接用gfortran编译时,编译器无法定位OpenMPI的模块文件路径,导致找不到mpi.mod。解决方式是手动指定OpenMPI的包含目录与链接库:
- 先确认brew安装的OpenMPI路径(通常为
/opt/homebrew/opt/open-mpi) - 使用以下命令编译:
gfortran test1.f90 -I/opt/homebrew/opt/open-mpi/include -L/opt/homebrew/opt/open-mpi/lib -lmpi
更简便的方式是使用OpenMPI提供的mpif90编译 wrapper,它会自动处理路径与链接参数,无需手动指定。
问题2:mpif90编译出现ld: warning: -commons use_dylibs is no longer supported
该警告源于OpenMPI编译脚本使用了过时的链接参数,不影响程序运行,若要消除可按以下两种方式操作:
- 编辑OpenMPI的配置文件:找到
/opt/homebrew/opt/open-mpi/share/openmpi/mpif90-wrapper-data.txt,删除包含-commons use_dylibs的行 - 编译时手动覆盖参数:
mpif90 test1.f90 -Wl,-commons,error
完整编译运行流程
- 用
mpif90编译(推荐,自动处理依赖):
mpif90 test1.f90 -o test1
- 运行程序(示例为4个进程):
mpiexec -n 4 ./test1
注:若警告未消除,可直接忽略,程序仍能正常执行。
内容的提问来源于stack exchange,提问作者Abhishek Gond
相关产品推荐
相关产品推荐

