[問題] 副程式錯誤訊息求助

作者: takaoclass (高雄級)   2018-04-25 19:13:18
我寫了兩隻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
請問這是怎麼回事?
作者: remia81   2018-04-25 19:32:00
call不用放C在裡面,那是回傳值
作者: PTT0207445 (我是鄉民)   2018-04-26 17:41:00
end應改為end program prend應改為end subroutine sy_sub上次我回文中的問題這次又重複出現,是否哪裡沒看懂嗎?我想我可能知道你的問題了,你有兩個.f檔,應該可以同時編譯,gortran my_sub.f pr.f。如果要分別編譯可以這樣gfortran -c my_sub.f 這樣會產生一個my_sub.o檔,然後gfortran my_sub.o pr.f 這樣編譯連結產生執行檔a.out你也可以不要分成兩個檔,直接把subroutine寫在pr.f裡,這樣只要gfortran pr.f就行了。但我還是建議你既然是從頭學起了,就不要再學77語法,直接從90開始,然後你需要至少一本書,中文書我推薦彭國倫的Fortran95程式設計http://www.sanmin.com.tw/product/index/000437833英文書我推薦Fortran 95/2003 Explained作者:Michael Metcalf, John Reid, and Malcolm Cohen
作者: jubilee2 (3321)   2018-05-07 11:21:00
樓上認真回!都可以開一篇回文了!讚!
作者: max533 (向陽花)   2018-06-09 19:09:00
路過推彭國倫那本,蠻不錯的工具書
作者: martink   2018-07-13 11:59:00
Cdzu

Links booklink

Contact Us: admin [ a t ] ucptt.com