回 帖 发 新 帖 刷新版面

主题:求教关于带Makefile文件的fortran程序包在windows中用cvf6.6编译的问题。

[size=4]初学fortran,最近在看别人的代码程序包,一共6个文件(见附件),其中MT2DModules.f90和OccamModules.f90为模块文件,被其它两个程序调用。子程序MT2D.f90含有大量子例程和函数,被Occam.f90调用。主程序Occam.f90含有一定量的子例程。还有一个Makefile文件无扩展名,一个.DS_Store文件(我推测应该没什么用)。
我先建了一个工程,然后加入已有的四个f90文件,并按以下顺序编译MT2DModules.f90、OccamModules.f90、MT2D.f90、Occam.f90,结果前两个无错,第三个有两个错误,第四个有两个警告(见word),请高人帮忙看一下是什么问题,是不是跟那个Makefile文件有关?还是其它什么原因?[/size]

回复列表 (共3个回复)

沙发

有.DS_Store,可能是原作者在Mac OS下生成的
makefile里已经写明编译顺序为OccamModules.f90 MT2DModules.f90 Occam.f90 MT2D.f90,
所以要把前两个OccamModules.f90 MT2DModules.f90先编译成.mod
后两个再编译成.o或.obj
然后把.o 和 .mod进行链接输出可执行程序或库
对于cvf,生成了.mod就可以直接使用use了
如何用cvf只编译不链接,请参见cvf命令行的使用

板凳

我测试了下,makefile可用,编译没问题。说明四个文件都没问题,你还是检查下你的项目设置吧。
这是windows下,ifort,makefile文件

FC90 = ifort
FCFLAGS= -O2
rm = DEL
TARGETS= clean  Occam2D

OBJSOC= OccamModules.f90 MT2DModules.f90 Occam.f90 MT2D.f90
        
all:  $(TARGETS)

clean:
        $(rm)  *.o *~ core *.mod
        $(rm)  Occam2D

Occam2D:$(OBJSOC)
        $(FC90) $(FCFLAGS) -o $@ $(OBJSOC)  $(LIBS)

# General compile rules

.SUFFIXES: .f90 .o 

.f90.o:    
    $(FC90) $(FCFLAGS)    -c -o $@ $<

3 楼

晕,MT2D  OCCAM反演

这个我编译过,没问题

我来回复

您尚未登录,请登录后再回复。点此登录或注册