我写了一个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
。
你能告诉我哪里弄错了吗?
非常感谢。
答案 0 :(得分:0)
这看起来很不寻常:
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 $<