我已经写了一个make文件如下:

COMPFLAGS     = -O3 -autodouble

CFLAGS        = $(COMPFLAGS)
PFLAGS        = $(COMPFLAGS)
FFLAGS        = $(COMPFLAGS)
CCFLAGS       = $(COMPFLAGS)
CXXFLAGS      = $(COMPFLAGS)

LD  =   ifort

LDFLAGS       = $(COMPFLAGS)

MAKEFILE      = Makefile

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

PROGRAM       = f1

all:        $(PROGRAM)

%.o:    %.f90
     @$(LD) $(COMPFLAGS) -c $<

$(PROGRAM):     $(OBJS)  $(MAKEFILE)

        @$(LD) $(LDFLAGS) $(OBJS)  -o $(PROGRAM)
        @echo "done"

clean:
        @rm -f $(OBJS) core

当我执行make时,会得到以下错误:
f77 -O3 -autodouble    -c -o f1.o f1.f
/usr/bin/f77: Illegal option: -autodouble
make: *** [f1.o] Error 255

我应该注意没有*.f文件,所有文件都*.f90
你能告诉我哪里出错了吗?
谢谢。

最佳答案

这看起来很不寻常:

LD  =   ifort
...

%.o:    %.f90
     @$(LD) $(COMPFLAGS) -c $<

LD是链接器,而不是编译器。可能是这样的:
CC = ifort
...

%.o: %.f90
     @$(CC) -std=f90 $(COMPFLAGS) -c $<

您可能还需要-x选项来告诉机器是Fortran 90,而不是要预处理的内容:
%.o: %.f90
     @$(CC) -x f90 -std=f90 $(COMPFLAGS) -c $<

08-18 03:58