Cygwin64环境下Fortran MPI配置与编译链接故障求助
Cygwin64环境下Code::Blocks配置Fortran+MPI的完整指南
前置准备:统一Cygwin MPI环境
禁止混用第三方MPI包(如单独安装的MPICH2),直接通过Cygwin包管理器安装原生兼容的MPI套件:
- 若用GNU Fortran(gfortran):安装
openmpi、openmpi-devel、openmpi-fortran-devel包 - 若用Intel Fortran(ifort):优先安装
mpich、mpich-devel、mpich-fortran-devel包(openmpi与ifort在Cygwin下兼容性较差)
安装完成后,在Cygwin终端执行which mpif90(GCC)或which mpifort(Intel)确认工具路径,确保输出为/usr/bin/mpif90或对应路径。
一、GNU Fortran(gfortran)配置方案
1. 直接用mpif90作为编译器(推荐,无需手动配置路径/库)
进入Code::Blocks项目的Build options:
- 切换到Compiler settings -> Programs
- 将
Fortran compiler路径改为Cygwin的mpif90路径(Windows格式,如C:\cygwin64\usr\bin\mpif90.exe) - 其余编译/链接选项无需手动修改,mpif90会自动处理
mpi模块引用、头文件搜索、库链接等所有依赖
2. 手动配置路径与库(适合需自定义编译选项的场景)
若坚持用原生gfortran:
- Search directories -> Compiler:添加
C:\cygwin64\usr\include\openmpi(openmpi路径)或C:\cygwin64\usr\include\mpich(mpich路径) - Search directories -> Linker:添加
C:\cygwin64\usr\lib\openmpi或C:\cygwin64\usr\lib\mpich - Linker settings -> Link libraries:添加
libmpi_mpi_fortran.a和libmpi.a(openmpi),或libmpichf90.a和libmpich.a(mpich) - Other linker options:补充
-lmpi_mpi_fortran -lmpi(openmpi)或-lmpichf90 -lmpich(mpich)
解决你遇到的GCC相关错误
use mpi报意外EOF:未安装Fortran版MPI开发包(如openmpi-fortran-devel),或include路径未覆盖mpi模块所在目录- 运行卡在
mpi_init:混用了第三方MPICH2库与Cygwin MPI,彻底移除项目中MPICH2的mpi.lib,改用Cygwin原生库 - 手动编译报
mpi_init_未定义:未通过mpif90编译,直接执行mpif90 your_program.f90 -o your_program.exe即可自动链接依赖
二、Intel Fortran(ifort)配置方案
1. 基础编译器配置
先在Code::Blocks全局设置中添加ifort:
- 打开
Settings->Compiler->Global compiler settings - 点击
Add,选择Intel Fortran编译器,设置Fortran compiler路径为ifort安装路径(如C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\bin\intel64\ifort.exe)
2. 项目MPI依赖配置
进入项目Build options:
- Search directories -> Compiler:添加
C:\cygwin64\usr\include\mpich - Search directories -> Linker:添加
C:\cygwin64\usr\lib\mpich - Linker settings -> Link libraries:添加
libmpichf90.a和libmpich.a - Other linker options:补充
-lmpichf90 -lmpich -L"C:\cygwin64\usr\lib\mpich" - 确保系统PATH中添加
C:\cygwin64\bin,保证运行时能加载MPI动态库
解决你遇到的Intel相关错误
- 链接选项错误:禁止使用Windows版MPICH2的
mpi.lib,必须用Cygwin的.a静态库/.dll.a导入库 - 文件找不到:所有路径需用Windows绝对格式(如
C:\cygwin64\...),避免使用Cygwin风格的/usr/...路径
运行MPI程序注意事项
不能直接点击Code::Blocks的「运行」按钮,需通过MPI启动器运行:
- 在Cygwin终端切换到程序输出目录,执行
mpiexec -n 4 ./your_program.exe(-n 4表示用4个进程) - 或在Code::Blocks中设置运行命令:
- 打开
Project->Set programs' arguments - 设置
Host application为C:\cygwin64\bin\mpiexec.exe - 设置
Program arguments为-n 4 "$(TARGET_OUTPUT_FILE)"
- 打开
内容的提问来源于stack exchange,提问作者DrunkenEngineer
相关产品推荐
相关产品推荐

