首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用f77替换Gfortran编译错误

用f77替换Gfortran编译错误
EN

Stack Overflow用户
提问于 2016-12-05 11:04:49
回答 1查看 937关注 0票数 0

齐需要用gfortran编译一些文件。我去了makefile,把所有的"f77“替换成"gfortran”。然而,当我做“做”时,我会得到这个错误。

代码语言:javascript
复制
gfortran -c verbal.f 
gfortran -c trgl6_octa.f 
gfortran -c trgl6_icos.f 
gfortran -c gauss_trgl.f 
gfortran -c gauss_leg.f 
gfortran -c sgf_3d_fs.f 
gfortran -c sgf_3d_w.f 
f77   -c -o sgf_3d_2p_w.o sgf_3d_2p_w.f
make: f77: Command not found
make: *** [sgf_3d_2p_w.o] Error 127

我不明白在make文件中(粘贴在下面)哪里有一个隐藏的f77没有被替换。我检查了"f77“的所有源文件,但没有。我很困惑。

代码语言:javascript
复制
#
# Objects
# -------
#
OBJ0 = verbal.o
OBJ1 = trgl6_octa.o trgl6_icos.o gauss_trgl.o gauss_leg.o 
OBJ2 = sgf_3d_fs.o sgf_3d_w.o sgf_3d_2p_w.o
OBJ2A = sgf_3d_3p.o sgf_3d_3p_ewald.o sgf_3d_3p_qqq.o
OBJ3 = prtcl_3d_mob.o
OBJ30 = elm_geom.o abc.o interp_p.o printel.o
OBJ33 = slp_trgl6.o slp_trgl6_sing.o slp_trgl3_sing.o
OBJ4 = gel.o gel_inv.o
OBJ  = $(OBJ0) $(OBJ1) $(OBJ2) $(OBJ2A) $(OBJ3) $(OBJ30) $(OBJ33) $(OBJ4)
#
# link
# ----
#
prtcl_3d_mob: $(OBJ)
    gfortran -c prtcl_3d_mob $(OBJ)
#
# compile
# ------
#
prtcl_3d_mob.o: prtcl_3d_mob.f 
    gfortran -c prtcl_3d_mob.f 
trgl6_octa.o: trgl6_octa.f 
    gfortran -c trgl6_octa.f 
trgl6_icos.o: trgl6_icos.f 
    gfortran -c trgl6_icos.f 
verbal.o: verbal.f
    gfortran -c verbal.f 
sgf_3d_fs.o: sgf_3d_fs.f 
    gfortran -c sgf_3d_fs.f 
sgf_3d_w.o: sgf_3d_w.f 
    gfortran -c sgf_3d_w.f 
sgf_3d_3p.o: sgf_3d_3p.f 
    gfortran -c sgf_3d_3p.f 
sgf_3d_3p_ewald.o: sgf_3d_3p_ewald.f 
    gfortran -c sgf_3d_3p_ewald.f 
sgf_3d_3p_qqq.o: sgf_3d_3p_qqq.f 
    gfortran -c sgf_3d_3p_qqq.f 
gel.o: gel.f 
    gfortran -c gel.f 
gel_inv.o: gel_inv.f 
    gfortran -c gel_inv.f 
prtcl_3d_geo.o: prtcl_3d_geo.f 
    gfortran -c prtcl_3d_geo.f 
interp_p.o: interp_p.f
    gfortran -c interp_p.f
abc.o: abc.f
    gfortran -c abc.f
printel.o: printel.f
    gfortran -c printel.f
elm_geom.o: elm_geom.f
    gfortran -c elm_geom.f
slp_trgl6.o: slp_trgl6.f
    gfortran -c  slp_trgl6.f 
slp_trgl6_sing.o: slp_trgl6_sing.f
    gfortran -c  slp_trgl6_sing.f 
slp_trgl3_sing.o: slp_trgl3_sing.f
    gfortran -c  slp_trgl3_sing.f 
gauss_leg.o: gauss_leg.f 
    gfortran -c gauss_leg.f 
gauss_trgl.o: gauss_trgl.f 
    gfortran -c gauss_trgl.f 
#
# clean
# -----
#
clean:
    rm -f core
    rm -f $(OBJ) prtcl_3d_mob
    rm -f prtcl_3d_mob.net prtcl_3d_mob.out
    rm -f matrix_inverse.out
    rm -f particle_elements.out
#
# purge
# ---
#
purge:
    rm -f core 
    rm -f $(OBJ) prtcl_3d_mob
    rm -f prtcl_3d_mob.net prtcl_3d_mob.out
    rm -f matrix_inverse.out
    rm -f particle_elements.out
#
# clobber
# ---
#
clobber:
    rm *
#
# all
# ---
#
all:
    make prtcl_3d_mob
EN

回答 1

Stack Overflow用户

发布于 2016-12-05 11:29:07

GNU有许多隐式规则https://www.gnu.org/software/make/manual/make.html#Catalogue-of-Rules

默认情况下,它将使用规则.f编译$(FC) $(FFLAGS) -c文件,默认情况下,FC设置为f77 (有关所有这些,请参阅上面的链接)。

由于没有为文件找到显式规则(“从.f.o"),所以make调用默认规则。

解决方案:两者之一

  1. 将FC设置为gfortran
  2. sgf_3d_2p_w.o添加显式规则

总的来说,我自己写的规则是

代码语言:javascript
复制
%.o: %.f90
    $(FC) $(FFLAGS) -c $<

在Makefile里。很明显,我需要定义FCFFLAGS

此外,您还可以删除编译文件的所有单独规则。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40972776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档