linux - 生成文件错误 "/usr/bin/f77: Illegal option: -autodouble"

标签 linux makefile fortran

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

关于linux - 生成文件错误 "/usr/bin/f77: Illegal option: -autodouble",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44489333/

相关文章:

c - ISO_C_BINDING 和 OpenMP 的问题

char * vs unsigned char* 有什么区别?

linux - 无法删除攻击者留下的文件$$$222.php

Golang 项目 Travis CI Build 失败,错误为 `Makefile:15: recipe for target ' test' failed`

c++ - 基于 Python 的构建工具

optimization - 在 forall 循环中使用用户定义的函数

python - 如何锁定终端运行 perl、obj c、c++、python 和 ruby​​ 等脚本的源代码?

c++ - GDB加载so文件失败并报错No such file or directory

linux - 使 : Snippet not working as expected

debugging - Fortran 是否通过子程序多次调用修改输入参数?