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

看板Fortran作者 (高雄級)時間6年前 (2018/04/25 19:13), 編輯推噓3(3015)
留言18則, 5人參與, 5年前最新討論串1/1
我寫了兩隻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://www.ptt.cc/bbs/Fortran/M.1524654800.A.648.html

04/25 19:32, 6年前 , 1F
call不用放C在裡面,那是回傳值
04/25 19:32, 1F

04/26 17:41, 6年前 , 2F
end應改為end program pr
04/26 17:41, 2F

04/26 17:42, 6年前 , 3F
end應改為end subroutine sy_sub
04/26 17:42, 3F

04/26 17:45, 6年前 , 4F
上次我回文中的問題這次又重複出現,是否哪裡沒看懂嗎?
04/26 17:45, 4F

04/26 21:36, 6年前 , 5F
我想我可能知道你的問題了,你有兩個.f檔,應該可以同時
04/26 21:36, 5F

04/26 21:42, 6年前 , 6F
編譯,gortran my_sub.f pr.f。如果要分別編譯可以這樣
04/26 21:42, 6F

04/26 21:43, 6年前 , 7F
gfortran -c my_sub.f 這樣會產生一個my_sub.o檔,然後
04/26 21:43, 7F

04/26 21:44, 6年前 , 8F
gfortran my_sub.o pr.f 這樣編譯連結產生執行檔a.out
04/26 21:44, 8F

04/26 21:46, 6年前 , 9F
你也可以不要分成兩個檔,直接把subroutine寫在pr.f裡,
04/26 21:46, 9F

04/26 21:47, 6年前 , 10F
這樣只要gfortran pr.f就行了。但我還是建議你既然是
04/26 21:47, 10F

04/26 21:52, 6年前 , 11F
從頭學起了,就不要再學77語法,直接從90開始,然後你需
04/26 21:52, 11F

04/26 21:57, 6年前 , 12F
要至少一本書,中文書我推薦彭國倫的Fortran95程式設計
04/26 21:57, 12F

04/26 21:58, 6年前 , 13F

04/26 22:00, 6年前 , 14F
英文書我推薦Fortran 95/2003 Explained
04/26 22:00, 14F

04/26 22:02, 6年前 , 15F
作者:Michael Metcalf, John Reid, and Malcolm Cohen
04/26 22:02, 15F

05/07 11:21, 6年前 , 16F
樓上認真回!都可以開一篇回文了!讚!
05/07 11:21, 16F

06/09 19:09, 5年前 , 17F
路過推彭國倫那本,蠻不錯的工具書
06/09 19:09, 17F

07/13 11:59, 5年前 , 18F
Cdzu
07/13 11:59, 18F
文章代碼(AID): #1Qu6BGP8 (Fortran)
文章代碼(AID): #1Qu6BGP8 (Fortran)