Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MakefileforFortran给出了以下错误:make:不知道如何生成数据结构。o_Makefile_Fortran_Gfortran_Freebsd - Fatal编程技术网

MakefileforFortran给出了以下错误:make:不知道如何生成数据结构。o

MakefileforFortran给出了以下错误:make:不知道如何生成数据结构。o,makefile,fortran,gfortran,freebsd,Makefile,Fortran,Gfortran,Freebsd,我正在为Fortran准备我的第一个makefile: 到目前为止,我的代码分为三个对象模块 这是我的生成文件: # Variables OBJS=datastructures.o global.o main.o FC=/usr/local/bin/gfortran8 FFLAGS=-Wl,-rpath=/usr/local/lib/gcc8 # Makefile test1: $(OBJS) $(FC) -o mktpro_a $(FFLAGS) $(OBJS) %.

我正在为Fortran准备我的第一个makefile:

到目前为止,我的代码分为三个对象模块

这是我的生成文件:

# Variables

OBJS=datastructures.o global.o main.o
FC=/usr/local/bin/gfortran8
FFLAGS=-Wl,-rpath=/usr/local/lib/gcc8

# Makefile

test1: $(OBJS) 
        $(FC) -o mktpro_a $(FFLAGS) $(OBJS)

%.o: %.f90
        $(FC) -c $(FFLAGS) $<

clean:
        rm $(OBJS)
        rm test1
我使用的是FreeBSD12和gcc8 gfortran8,而不是

%.o: %.f90
    $(FC) -c $(FFLAGS) $<
换成

.f90.o:
    $(FC) -c $(FFLAGS) $<
您可能也需要显式输出我不熟悉此编译器:

.f90.o:
    $(FC) -c $(FFLAGS) -o $@ $<

为了帮助其他人,这似乎是在FreeBSD 12 make中实现这一点的方法,它似乎是PMake

.SUFFIXES       : .o .f90
.f90.o          :
        $(FC) $(FFLAGS) -c $(.IMPSRC)

此处的更多信息:

感谢您提供的信息,我已经添加了这两个选项,但不幸的是,它不起作用。我仍然有同样的信息。我了解到FreeBSD使用PMake。我正在阅读并试图找出如何实现这一点。如果我将.f90重命名为.f,则它似乎已经实现了从.f构造.o的规则。后缀:.o.f90\n.f90.o:$FC$FFLAGS-c$.IMPSRC显然这是一个额外的行。请尝试使用gmake GNU make。
.SUFFIXES       : .o .f90
.f90.o          :
        $(FC) $(FFLAGS) -c $(.IMPSRC)