关于makefile的问题

时间:2022-04-08 13:25:41
现在又这样一个makefile文件,感觉写的有点怪,在服务器上运行错误,请大神们帮小弟看看怎么回事啊,感激中……
错误提示为:
/opt/mpi/intelmpi/3.1/bin/mpif77 -c -g -mp share3dcyl.f
[: 417: no: unexcepted operator
f771: error: invalid option p'
make: *** [shape3dcyl.o] Error 1


makefile是这样的:
# set an environment variable LINUX_PGI=1 to compile on Linux, or
# MAC_PGI=1 to compile on a Mac.

ifdef LINUX_PGI
F77 = pgf95
cc = pgcc
CC = pgCC

opts = -g -Mbounds -mcmodel=medium -Mcache_align -mp#opts = -fastsse -Mipa=fast -Minfo=loop -Mcache_align -mcmodel=medium -mp
# your optimized BLAS library here. This is the AMD Core Math Library
BLAS = -lacml
endif

ifdef MAC_PGI
F77 = pgf95
cc = pgcc
CC = pgcpp
opts = -fastsse -mp
#opts = -g -Mlarge_arrays -Mbounds -mp
BLAS = -Wl,-framework,veclib
endif
### end PGI

# optimize flags


files=assign_dxm.f\
      shape3dcyl.f\
      window3d.f\
      window1d.f\
      correct3dcyl.f\
      gauss3d.f\
      write3d.f\
      FEM_shp3d.f\
      ReadAline.f\
      extf_loadpar.f\
      p_sts_JC.f \
      myforlib.f\
      dgeco.f\
      dgefa.f\
      dgedi.f\
      shell_body_forceZ.f\
      Dforce_update.f\
      matrix.f \
      initialize.f \
      permuteD.f \
      evalPoly.f \
      evalQuad.f \
      restart.f \
      p_search3d.f


objs = $(files:.f=.o)

all: pRKPM pshape

pRKPM: $(objs) new_pmain3d.o
$(F77) -o $@  $(opts) $^ $(CIRCE) $(BLAS)
pshape: $(objs) comp_shape.o prepro3d.o
$(F77) -o $@  $(opts) $^ $(CIRCE) $(BLAS)
.f.o: parameter.h 
$(F77) -c $(opts) $<
clean:
rm -f pshape pRKPM pstate $(objs) *.o *.oo

6 个解决方案

#1


刚开始接触linux,不太清楚红色部分是什么意思

#2


opts = -g -Mbounds -mcmodel=medium -Mcache_align -mp
变量赋值
$(F77) -o $@ $(opts) $^ $(CIRCE) $(BLAS)  --》
这句有好几个变量
F77 = pgf95
opts = -g -Mbounds -mcmodel=medium -Mcache_align -mp
BLAS = -Wl,-framework,veclib
$(CIRCE) 在文章中没有找到定义应该也是变量
所以就是上面那个展开就是:
pgf95 -o $@ -g -Mbounds -mcmodel=medium -Mcache_align -mp $^ 【变量CIRCE】-Wl,-framework,veclib

#3


/opt/mpi/intelmpi/3.1/bin/mpif77 -c -g -mp share3dcyl.f
[: 417: no: unexcepted operator
f771: error: invalid option p'
make: *** [shape3dcyl.o] Error 1

make 文件 share3dcyl.f
时候出现了无法识别的操作符 [:,也许导致了工具f771:有一个无法识别的选项p'

你应该去查share3dcyl.f文件

#4


也就是说,源文件share3dcyl.f本身出现了问题,而不是makefile的问题,是这样吗?

#5


也就是说,源文件share3dcyl.f本身出现了问题,而不是makefile的问题,是这样吗? 

引用 3 楼  的回复:
/opt/mpi/intelmpi/3.1/bin/mpif77 -c -g -mp share3dcyl.f
[: 417: no: unexcepted operator
f771: error: invalid option p'
make: *** [shape3dcyl.o] Error 1

make 文件 share3dcyl.f
时候出现了无法识别的操作符 [:,也许导……

#6


可以这么认为

#1


刚开始接触linux,不太清楚红色部分是什么意思

#2


opts = -g -Mbounds -mcmodel=medium -Mcache_align -mp
变量赋值
$(F77) -o $@ $(opts) $^ $(CIRCE) $(BLAS)  --》
这句有好几个变量
F77 = pgf95
opts = -g -Mbounds -mcmodel=medium -Mcache_align -mp
BLAS = -Wl,-framework,veclib
$(CIRCE) 在文章中没有找到定义应该也是变量
所以就是上面那个展开就是:
pgf95 -o $@ -g -Mbounds -mcmodel=medium -Mcache_align -mp $^ 【变量CIRCE】-Wl,-framework,veclib

#3


/opt/mpi/intelmpi/3.1/bin/mpif77 -c -g -mp share3dcyl.f
[: 417: no: unexcepted operator
f771: error: invalid option p'
make: *** [shape3dcyl.o] Error 1

make 文件 share3dcyl.f
时候出现了无法识别的操作符 [:,也许导致了工具f771:有一个无法识别的选项p'

你应该去查share3dcyl.f文件

#4


也就是说,源文件share3dcyl.f本身出现了问题,而不是makefile的问题,是这样吗?

#5


也就是说,源文件share3dcyl.f本身出现了问题,而不是makefile的问题,是这样吗? 

引用 3 楼  的回复:
/opt/mpi/intelmpi/3.1/bin/mpif77 -c -g -mp share3dcyl.f
[: 417: no: unexcepted operator
f771: error: invalid option p'
make: *** [shape3dcyl.o] Error 1

make 文件 share3dcyl.f
时候出现了无法识别的操作符 [:,也许导……

#6


可以这么认为