我已经写了一个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 $<