【发布时间】:2021-12-29 06:42:08
【问题描述】:
我正在尝试在 ubuntu 16.04 中运行我的项目团队的一些旧 Fortran 代码。我没有对现有代码进行任何修改。
我所做的就是安装 gfortran,打开一个终端,然后使用“cd”命令转到文件位置。这里我有很多文件,但只考虑这三个,一个脚本文件compile.sh,以及两个makefile counter.make 和remail.make。
在compile.sh
make -f counter.make
make -f remail.make
在counter.make
SOURCE_APPLI=../SOURCES_COUNTERFLOW/
SOURCES_f77 = $(SOURCE_APPLI)table.f
TARGET = unst.e
OBJECTS = $(SOURCES_f77:.f=.o)
COMPILE = f77 -f
.f90.o :
$(COMPILE1) -o $*.o -c $*.f90
.f.o :
$(COMPILE) -o $*.o -c $*.f
$(TARGET) : $(OBJECTS)
$(COMPILE) $(OBJECTS) -o $@
del :
$(DELETE) $(OBJECTS)
在remail.make
SOURCE_APPLI= ../SOURCES_COUNTERFLOW/
$(SOURCE_APPLI)grcom.f
TARGET = remail.e
OBJECTS = $(SOURCES_f77:.f=.o)
COMPILE = f90
.f90.o :
$(COMPILE) -o $*.o -c $*.f90
.f.o :
$(COMPILE) -o $*.o -c $*.f
$(TARGET) : $(OBJECTS)
$(COMPILE) $(OBJECTS) -o $@
del :
$(DELETE) $(OBJECTS)
当我运行compile.sh 时,出现如下所示的错误
f77: error: unrecognized command line option ‘-f’
counter.make:29: recipe for target 'unst.e' failed
make: *** [unst.e] Error 1
make: 'remail.e' is up to date.
所以我的问题是在f77 命令行中使用和不使用-f 选项有什么区别?
【问题讨论】:
-
f77: error: unrecognized command line option ‘-f’来自f77,而不是来自make。 -
令人困惑的是,有两个 -f 选项,
make -f和f77 -f。后者几乎肯定是错误的,因为在 ubuntu f77 映射到没有 -f 选项的 gfortran 上。关于前者的问题可以通过阅读man make来回答 -
@VladimirF 感谢您的回复。我的系统中有 gfortran(GNU Fortran 95 编译器)和 gfortran-5(GNU Fortran 编译器)。 f77 有没有特定的编译器?
-
输入
type f77,它可能指向gfortran,IIRC他们在Ubuntu上这样做。 -
@VladimirF 我在终端窗口中输入了
type f77,得到的输出为f77 is /usr/bin/f77。这是正确的吗?