Linux 没有规则使f90_所需的目标f1.o变得简单

Linux 没有规则使f90_所需的目标f1.o变得简单,linux,makefile,fortran,Linux,Makefile,Fortran,我有下面的makefile。它适用于.f和.c文件,但当我有.f90文件并想用ifort编译它时,它就不起作用了? 你能告诉我在哪里换车以及如何换车吗? 谢谢 FCOMPFLAGS = -O -ffixed-line-length-132 CCOMPFLAGS = -O FFLAGS = $(FCOMPFLAGS) -fsecond-underscore CFLAGS = $(CCOMPFLAGS) LDFLAG

我有下面的makefile。它适用于
.f
.c
文件,但当我有
.f90
文件并想用ifort编译它时,它就不起作用了? 你能告诉我在哪里换车以及如何换车吗? 谢谢

FCOMPFLAGS    =    -O -ffixed-line-length-132
CCOMPFLAGS    =    -O         

FFLAGS        =    $(FCOMPFLAGS) -fsecond-underscore
CFLAGS        =    $(CCOMPFLAGS)
LDFLAGS       =    $(FCOMPFLAGS)

LD            =    gfortran
FC            =    gfortran

MAKEFILE      =    Makefile
PROGRAM1      =    f1 

OBJS          =    f1.o      \
                   f2.o      \
                   f3.o                    

all:        $(PROGRAM1)    

$(PROGRAM1): $(OBJS) $(MAKEFILE)
    $(LD) $(LDFLAGS) $(OBJS) -o $(PROGRAM1)

clean:         @rm -f $(OBJS) core
当我执行“make”时,我得到以下错误:

make: *** No rule to make target `f1.o', needed by `f90_simple'.  Stop.
似乎我的makefile无法识别*.f90文件,我的另一个问题是我们是否有在makefile中使用ifrot编译器的标志
谢谢

您需要添加隐式规则:

%.o : %.f90
<tab>$(FC) $(FCOMPLAGS) -c $<
%.o:%.f90
$(FC)$(FCOMPLAGS)-c$<

由于您没有提供有关您对使用ifort所做更改的信息,也没有提供问题所在的任何指示(不起作用不是一个有用的问题描述),因此我们无法为您提供任何帮助。@Madscietric感谢您的回复,但当我有f1.f和f2.f和f3.f并使用时,它就会工作。对于文件f1.f90和f2.f90以及f3.f90,同样的事情也不起作用,您能告诉我如何修复它,或者让我的问题更清楚一些吗?您应该显示您输入的命令的示例,显示您得到的输出,并解释您认为它不正确的原因。请剪切并粘贴错误消息,而不是解释错误消息。“不工作”可能意味着一百万件事情:可能找不到编译器,可能找不到源代码,可能代码中有错误,可能目录错误,可能需要安装额外的库,可能磁盘空间不足,计算机可能会自动重新启动。。。我们不知道,甚至不知道您的问题是什么?我们如何帮助您解决?另请参阅GNU手册。@Jack还有一个问题,为什么行clean:@rm-f$(OBJS)core不适用于我*.o文件不会被删除?你能给我解释一下吗?把
clean:
放在一行,在下面的一行,有
@rm-f$(OBJS)core
@Jack,然后每次我都要键入make clean??有没有办法使它自动化?