Linux 没有规则使f90_所需的目标f1.o变得简单
我有下面的makefile。它适用于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
.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??有没有办法使它自动化?