Windows系统下使用Makefile编译fds2fem项目报错排查
Windows 平台编译 fds2fem 工具完整解决方案
前期操作的问题梳理
- 第一次执行
make makefile属于命令误用:make会自动读取当前目录下的Makefile配置文件,不需要额外把makefile作为参数传入,传入后make会将makefile识别为待构建的目标,自然提示没有可执行操作,目录不会产生任何变化。 - 第二次报错找不到ifort是因为Intel Fortran编译器没有加载到当前终端的环境变量中,后续手动把ifort.exe路径加入PATH的操作只解决了命令识别问题,但没有加载完整的Visual Studio编译依赖,才引发了后续的文件识别错误。
- 第三次出现目标文件后缀为
.obj、找不到global.o的核心原因:Windows平台下的ifort编译器默认生成的目标文件后缀是.obj,但当前使用的Makefile是面向Linux/macOS环境编写的,默认指定的目标文件后缀为.o,后缀不匹配导致链接阶段找不到指定的目标文件;同时手动单独添加ifort路径的方式缺失大量VS编译所需的环境变量,就算修改后缀也大概率出现链接报错。
实操编译步骤
方案1:适配现有ifort环境编译(匹配你已安装的VS2019+ifort组件)
- 先清理之前编译生成的临时文件,在源码目录执行命令:
del *.obj *.mod *.exe - 打开目录下的Makefile,做4处适配修改:
- 将
OBJ变量定义段里所有.o后缀的目标文件名,全部替换为.obj后缀 - 将后缀匹配规则从
%.o: %.f90修改为%.obj: %.f90 - 将编译参数里的Linux风格横杠参数替换为Windows下ifort识别的斜杠参数,比如
-free改为/free、-O3改为/O3 - 将
clean目标下的Linux删除命令替换为Windows cmd兼容命令
修改后的核心配置段参考:
注意:不要在普通CMD窗口直接执行make,要从开始菜单打开「Intel oneAPI command prompt for Intel 64 for Visual Studio 2019」(对应你安装的VS2019配套ifort环境),cd到源码目录后直接执行FC= ifort FFLAGS= /free /O3 /traceback LDFLAGS= OBJ= global.obj string.obj error.obj misc.obj math.obj cfg_reader.obj fds_dump.obj fds_reader.obj cfast_dump.obj iso_reader.obj \ fds_stats.obj fem_dump.obj fem_stats.obj abaqus_reader.obj abaqus_output.obj \ ansys_reader.obj ansys_output.obj matching.obj \ mapping.obj mapping_iso.obj main.obj fds2fem: $(OBJ) $(FC) $(FFLAGS) $(LDFLAGS) -o fds2fem.exe $(OBJ) %.obj: %.f90 $(FC) $(FFLAGS) -c $< clean: del /f /q *.obj *.mod fds2fem.exemake,即可正常生成fds2fem.exe可执行文件。 - 将
方案2:用gfortran替代ifort编译(无需配置Intel编译环境)
如果觉得ifort环境配置繁琐,可以直接用MinGW的gfortran编译器编译,步骤更简单:
- 通过choco安装所需依赖:
choco install mingw make -y - 打开Makefile,只需要修改编译器和对应编译参数即可,其余配置无需调整:
FC = gfortran FFLAGS = -ffree-form -O3 - 打开MinGW64终端,cd到源码目录执行
make,即可生成fds2fem.exe可执行文件。
编译后验证
编译完成后,在源码目录执行fds2fem.exe传入测试文件参数,如果能正常运行输出处理结果,就说明编译成功。后续把fds2fem.exe所在目录加入系统PATH,就可以在任意终端直接执行fds2fem targetfile调用工具。
注意:永远不要手动单独把ifort.exe的路径加到系统PATH,这种方式会缺失VS链接库、编译环境初始化配置,非常容易触发各种无规律的编译、链接报错,优先使用Intel官方提供的对应VS版本的编译终端,或者提前执行ifort安装目录下的
vars.bat脚本加载完整编译环境。
内容的提问来源于stack exchange,提问作者Jonas Lionel
相关产品推荐
相关产品推荐

