You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求gfortran编译器生成/不生成.mod文件的规则说明文档

gfortran模块编译行为的文档线索求助

使用gfortran -c my_module.f90编译含模块的文件my_module.f90时,修改文件后会出现两种编译行为:

  • 若仅修改子程序/函数的内部实现,原型(接口定义)未发生变化,编译仅生成my_module.o文件
  • 若子程序/函数的原型(比如参数类型、个数、返回值类型等)发生变更,编译会同时生成my_module.mod和my_module.o文件

这种特性很实用:在Makefile中可以利用它避免重新编译所有依赖该模块的文件,只需要重新链接即可。附对应的Makefile示例:

.SUFFIXES:

FC=gfortran
LD=gfortran

F90MODSRC = my_module.f90
F90SRC = main.f90

F90OBJ = $(F90MODSRC:%.f90=%.o) $(F90SRC:%.f90=%.o)
F90MOD = $(F90MODSRC:%.f90=%.mod)

my_pgm : $(F90OBJ)
    $(LD) -o $@ $+

$(F90MOD):%.mod: %.f90
    
$(F90OBJ): %.o: %.f90
    $(FC) -c $<

main.o: my_module.mod

.PHONY: clean
clean:
    -rm -f $(F90OBJ) $(F90MOD) my_pgm

目前找不到gfortran官方文档中说明编译器如何区分这两种情况的内容,希望能得到相关线索。

内容的提问来源于stack exchange,提问作者Stef1611

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:32:06