我尝试使用 makefile 将一些模块链接到主程序。
我有一个名为 SimParam_mod.f90 的模块,其中包含:
MODULE simParam
integer, parameter:: yDim = 80
integer, parameter:: xDim = 80
integer, parameter:: iterper = 100
integer, parameter:: tMax = 2000
END MODULE simParam
使用 make 选项编译后:
MODDIR =../module
CFLAGS=-I$(IDIR)
OBJDIR=obj
LIBDIR =../lib
LIBS=-lm
CF=gfortran
CFLAGS=-I.
OBJ = main.o D2Q9Const_mod.o SimParam_mod.o
%.o: %.f90
$(CF) -c -O3 -o $@ $< -I$(MODDIR)
run: $(OBJ)
$(CF) -o $@ $^ $(CFLAGS)
为iterper和tMax存储的值不会更新。我正确保存它,并且使用 gfortran -c 编译的模块没有看到任何问题,并且创建了 .mod 文件。
我检查了 .mod 文件,它们存储的值不是 module.f90 中指定的值,iterper = 1 和 tMax = 20,应该分别是 100 和 2000。我能说的是,我真的不知道如何使用 make 指令,并且存储的这些错误值是我之前定义的以前的值..有一些我错过的东西..
预先感谢您的帮助!
普伊加尔
最佳答案
我只需像 Mark 所说的那样在 makefile 中添加一个命令来删除 .o 和 .mod 文件并重新编译程序。在这种情况下工作完美。
只需添加: rm -f *.o
感谢所有对该主题感兴趣的人!
普伊加尔
关于module - makefile 模块在 fortran 90 中编译 gfortran,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378038/