作者takaoclass (高雄级)
看板Fortran
标题[问题] 副程式错误讯息求助
时间Wed Apr 25 19:13:18 2018
我写了两只f档,分别是主程式、副程式,语法应该没有错误,却在编译时跳出错误讯息。
程式码如下:
主程式:
PROGRAM pr
REAL AA,BB,CC
AA = 9.0
BB = 5.0
CALL MY_SUB(AA,BB,CC)
END
副程式:
SUBROUTINE MY_SUB(A,B,C)
REAL A,B,C
C = A + B
WRITE(*,*) C
RETURN
END
编译时却分别跳出以下错误讯息:
/tmp/ccbidGKt.o: In function `MAIN__':
pr.f:(.text+0x32): undefined reference to `sub_'
collect2:error :ld returned 1 exit status
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/../../../../lib64/crtl.o: In function
`_start':
(.text+0x20): undefined reference to `main'
collect2:error :ld returned 1 exit status
请问这是怎麽回事?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 150.116.164.57
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1524654800.A.648.html
1F:→ remia81: call不用放C在里面,那是回传值 04/25 19:32
2F:推 PTT0207445: end应改为end program pr 04/26 17:41
3F:→ PTT0207445: end应改为end subroutine sy_sub 04/26 17:42
4F:→ PTT0207445: 上次我回文中的问题这次又重复出现,是否哪里没看懂吗? 04/26 17:45
5F:推 PTT0207445: 我想我可能知道你的问题了,你有两个.f档,应该可以同时 04/26 21:36
6F:→ PTT0207445: 编译,gortran my_sub.f pr.f。如果要分别编译可以这样 04/26 21:42
7F:→ PTT0207445: gfortran -c my_sub.f 这样会产生一个my_sub.o档,然後 04/26 21:43
8F:→ PTT0207445: gfortran my_sub.o pr.f 这样编译连结产生执行档a.out 04/26 21:44
9F:→ PTT0207445: 你也可以不要分成两个档,直接把subroutine写在pr.f里, 04/26 21:46
10F:→ PTT0207445: 这样只要gfortran pr.f就行了。但我还是建议你既然是 04/26 21:47
11F:→ PTT0207445: 从头学起了,就不要再学77语法,直接从90开始,然後你需 04/26 21:52
12F:→ PTT0207445: 要至少一本书,中文书我推荐彭国伦的Fortran95程式设计 04/26 21:57
14F:→ PTT0207445: 英文书我推荐Fortran 95/2003 Explained 04/26 22:00
15F:→ PTT0207445: 作者:Michael Metcalf, John Reid, and Malcolm Cohen 04/26 22:02
16F:→ jubilee2: 楼上认真回!都可以开一篇回文了!赞! 05/07 11:21
17F:推 max533: 路过推彭国伦那本,蛮不错的工具书 06/09 19:09
18F:→ martink: Cdzu 07/13 11:59