作者adu (^_^)
看板Fortran
标题[问题] 无法输出output(已写好的档案)
时间Thu Apr 26 15:30:11 2018
我拿到一份写好的档案要试跑
理论上应该执行就好了 不过我怎麽试 make 或 gfortran 都没有 output file 产生
请问问题可能出在哪里 还是我该用别的指令?
(资料在 cabbagel.F
主程式会呼叫一个叫做 parfit的资料夹里面的档案
结果应该要产生成一个档案
我在Ubuntu 下打 make 或 make cabbagel 或 改成gfortran ,会跑但都没有产生)
__下面是主程式的makefile__
# Makefile for PARFITS
# version including handling of implicit switches
MAKE = make
FC = gfortran
TRAJEC = traj.o
BLASM = ./parfits/blasm/blas.o \
./parfits/blasm/mutil.o \
./parfits/blasm/dgesvd1.o
INTEGR1 = ./parfits/integr/metanb.o
# INTEGR2 = ./parfits/integr/difsys.o (not available)
PARFITS = ./parfits/parfits.o \
./parfits/monitn.o \
./parfits/initju.o \
./parfits/hcut.o \
./parfits/inscal.o \
./parfits/rankr.o \
./parfits/evalc.o \
./parfits/ssai.o \
./parfits/chscal.o \
./parfits/calcom.o \
./parfits/ind.o \
./parfits/intj.o \
./parfits/idcon.o \
./parfits/qdiff.o \
./parfits/hdiff.o \
./parfits/update.o \
./parfits/fd.o \
./parfits/yallfunc.o \
./parfits/upmult.o \
./parfits/exit.o
INCREM = ./parfits/increm/increm4.o \
./parfits/increm/inc4_l2.o \
./parfits/increm/inc4_l1.o \
./parfits/increm/inc4_l3.o \
./parfits/increm/dec4_l2.o \
./parfits/increm/sol_l2.o \
./parfits/increm/sol_l1.o \
./parfits/increm/sol_l3.o \
./parfits/increm/dminv_l1.o \
./parfits/increm/qpsol.o \
./parfits/increm/lpckk.o \
./parfits/increm/qpckk.o \
./parfits/increm/qpckk1.o \
./parfits/increm/qpckk2.o \
./parfits/increm/crj.o
COV = ./parfits/cov/cov.o \
./parfits/cov/cov4.o \
./parfits/cov/covtot.o
PRINT = ./parfits/print/print.o \
./parfits/print/prtmain.o \
./parfits/print/prthead.o \
./parfits/print/prtit.o \
./parfits/print/prtmatrix.o \
./parfits/print/prtmatrixlp.o \
./parfits/print/prtmatrixhp.o \
./parfits/print/prtmatrixint.o
PYMETS = pymets.o
PYMET2S = pymet2s.o
CABBAGEL = cabbagel.o
CABBAGEQ = cabbageq.o
CABBAGELLL = cabbagelll.o
CABBAGEQQQ = cabbageqqq.o
PYMETDS = $(PYMETS) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
PYMET2DS = $(PYMET2S) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
CABBAGDL = $(CABBAGEL) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
CABBAGDQ = $(CABBAGEQ) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
CABBAGDLLL = $(CABBAGELLL) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
CABBAGDQQQ = $(CABBAGEQQQ) $(PARFITS) $(INCREM) $(COV) $(INTEGR1) $(BLASM)
$(PRINT) $(TRAJEC)
FFLAGS = -c -g -Wall
CCFLAGS = -c -g -Wall
#LDFLAGS = -Wall
all: pymets pymet2s \
cabbagel cabbageq \
cabbagelll cabbageqqq
pymets: lkmaxdim mkparfits $(PYMETDS)
-@$(FC) $(PYMETDS) $(LDFLAGS) -o $@
pymet2s: lkmaxdim mkparfits $(PYMET2DS)
-@$(FC) $(PYMET2DS) $(LDFLAGS) -o $@
cabbagel: lkmaxdim mkparfits $(CABBAGDL)
-@$(FC) $(CABBAGDL) $(LDFLAGS) -o $@
cabbageq: lkmaxdim mkparfits $(CABBAGDQ)
-@$(FC) $(CABBAGDQ) $(LDFLAGS) -o $@
cabbagelll: lkmaxdim mkparfits $(CABBAGDLLL)
-@$(FC) $(CABBAGDLLL) $(LDFLAGS) -o $@
cabbageqqq: lkmaxdim mkparfits $(CABBAGDQQQ)
-@$(FC) $(CABBAGDQQQ) $(LDFLAGS) -o $@
mkparfits:
-@cd parfits;$(MAKE) parfit
lkmaxdim:
-@echo "Link auf maxdim wird gesetzt."
-@rm maxdim.f -f
ln -s ./parfits/maxdim.f maxdim.f
clean:
$(MAKE) clean -C ./parfits
rm maxdim.f -f
rm *.o -f
rm fort.* -f
rm pymets.f -f
rm pymet2s.f -f
rm cabbagel.f -f
rm cabbageq.f -f
rm cabbagelll.f -f
rm cabbageqqq.f -f
rm delays.f -f
rm traj.f -f
rm pymets -f
rm pymet2s -f
rm cabbagel -f
rm cabbageq -f
rm cabbagelll -f
rm cabbageqqq -f
# Following lines provide automatic invocation of the
# C preprocessor cpp for FORTRAN files with suffix .F
# (Default on most UNIX platforms, but not on IBM's)
# define preprocessor
CPP = /lib/cpp
# compiler option for preprocessor
CPFLAGS = -P
.SUFFIXES: .F
.F.o:
-@$(CPP) $(CPFLAGS) $< $*.f
$(FC) $(FFLAGS) $*.f
-@rm -f $*.f
.f.o:
-@$(FC) $(FFLAGS) $*.f
.c.o:
$(CC) $(CCFLAGS) $*.c
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 78.104.103.87
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1524727815.A.0C9.html
1F:→ blc: 好像没有用来执行程式的target? 04/26 17:31
程式本身有缺吗?
2F:→ Cypresslin: 有错误讯息吗? 04/27 00:33
这个程式有点麻烦的是,他是我的指导教授三十年前发表论文写的
後来他都没有亲手改过,最後一个版本是十年前的学长动的
所以他看不懂 学长也早已毕业
实验室大家在用的是Matlab, R, Python跟Java
很希望有版大可以告诉我问题在哪边
目前是看得懂fortran程式想做些甚麽 但没到可以写的程度
(有Matlab跟R的经验,学过初浅的C++)
3F:→ Cypresslin: make[1]: /lib/cpp: Command not found 缺cpp预处理器 04/27 10:37
4F:→ Cypresslin: 先装个cpp再重跑make看看吧 04/27 10:43
抱歉昨天电脑不在身边 所以用朋友的Window没注意到
刚刚用我的电脑跑
用了make之後 会正常产生需要的 *.o 的资料
不过我期待他会在某个的地方产生output 但是一直都没找到
___这是执行make後(獢颤是桌面 在复制 储存 後的乱码 执行时没问题)___
user@user-Aspire-S5-371:~/獢颤/try$ make
ln -s ./parfits/maxdim.f maxdim.f
make[1]: Entering directory '/home/user/獢颤/try/parfits'
make[2]: Entering directory '/home/user/獢颤/try/parfits/print'
Building PRINT Objects
make[2]: Leaving directory '/home/user/獢颤/try/parfits/print'
make[2]: Entering directory '/home/user/獢颤/try/parfits/blasm'
Building BLAS and MUTIL Objects
make[2]: Leaving directory '/home/user/獢颤/try/parfits/blasm'
make[2]: Entering directory '/home/user/獢颤/try/parfits/cov'
Building COV Objects
make[2]: Leaving directory '/home/user/獢颤/try/parfits/cov'
make[2]: Entering directory '/home/user/獢颤/try/parfits/increm'
Building INCREM Objects
make[2]: Leaving directory '/home/user/獢颤/try/parfits/increm'
make[2]: Entering directory '/home/user/獢颤/try/parfits/integr'
Building INTEGR Objects
make[2]: Leaving directory '/home/user/獢颤/try/parfits/integr'
Building PARFITS
make[1]: Leaving directory '/home/user/獢颤/try/parfits'
___make结束後的档案___
user@user-Aspire-S5-371:~/獢颤/try$ ls
cabbagel cabbagel.o cabbageqqq.F parameters pymets traj.F
cabbagel.F cabbageq cabbageqqq.o parfits pymets.F traj.o
cabbagelll cabbageq.F fort.13 pymet2s pymets.F_orig
cabbagelll.F cabbageq.o makefile pymet2s.F pymets.F-with
cabbagelll.o cabbageqqq maxdim.f pymet2s.o pymets.o
user@user-Aspire-S5-371:~/獢颤/try$
※ 编辑: adu (78.104.103.87), 04/27/2018 15:40:17
5F:→ blc: 这个makefile只有做编译而已,要自己手动执行编好的程式 04/27 20:24
6F:→ adu: 请问手动执行的意思是? 04/27 21:19
7F:→ rex0707: 要自己开启执行档来执行程式的意思吧 执行执行档之後才会 04/27 23:43
8F:→ rex0707: 产生output file 04/27 23:43
9F:→ rex0707: cabbagel, cabbageq, pymet2s, pymets都是.exe? .out? 04/27 23:44
10F:→ adu: 他们都是没有附档名的档案 用editor开都是乱码 04/28 02:07
自己开启执行档是这个意思吗?
user@user-Aspire-S5-371:~/PARFIT-EKATERINA$ gfortran -o cabbagel cabbagel.F
/tmp/ccylm1aX.o: 於函式 MAIN__:
cabbagel.F:(.text+0x13b): 未定义参考到「dcopy_」
cabbagel.F:(.text+0x2e7): 未定义参考到「metanb_」
cabbagel.F:(.text+0x30b): 未定义参考到「parfit_」
cabbagel.F:(.text+0x36d): 未定义参考到「metanb_」
cabbagel.F:(.text+0x3a8): 未定义参考到「traj_」
collect2: error: ld returned 1 exit status
※ 编辑: adu (78.104.103.87), 04/28/2018 02:40:49
11F:→ rex0707: 欧欧看到你是用ubuntu 执行档案就打./cabbagel就可以了吧 04/28 13:31
对 有output了!
我看看要怎麽把新的资料改进去
谢谢rex0707, blc跟 Cypresslin :D
※ 编辑: adu (78.104.26.192), 04/28/2018 16:41:32