2009-12-10 42 views
0

我剛剛設置了新的WW3並編譯並運行了測試用例'ctest',並且工作正常。Wave Watch 3 Fortran編譯問題

然後,當我試圖編譯和鏈接的主要節目,我得到了以下錯誤消息之一..

----------------------------------------------- 
----compiling WAVEWATCH III---- 
----------------------------------------- 

Scratch Directory : /home/ww3/scratch 
Save source codes : yes 
Save listings : yes 
Processing ww3_grid 

--------------------- 
ad3 : processing w3servmd 
      w3servmd.mod 
ad3 : processing w3gdatmd 

     *** compile error *** 
file w3gdatmd.o not found 

mv: cannot stat `w3gdatmd.o': No such file or directory 
make: *** [/home/ww3/obj/w3gdatmod.o] Error 5 

********************** 
*** end of compilation *** 
********************** 

因此,正確地轉換w3servmd.ftn到w3servmd.f90,然後成功地編譯和產生w3servmd的.mod並在/ MOD目錄的地方這

下一步是編譯w3gdatmd.f90,但在錯誤的腳本,此文件是說..

「無法打開閱讀w3servmd.mod ,沒有這樣的文件或目錄「

但w3servmd.mod存在!

所以我想在'comp'代碼中可能會出現一個錯誤,它不會指向/ mod文件夾中的.mod文件。

的事情是在「補償」文件,它規定..

「確保編譯點到模塊存儲($ m_path)正確的目錄,請參見下面的例子。」

但我看不到它在下面的代碼中的位置。

任何提示? 謝謝

回答

0

我熟悉的大多數Fortran> = 90編譯器在當前目錄中創建它們的輸出文件:對象,模塊和可執行文件。然後,目錄中源文件的其他編譯步驟很容易找到以前製作的模塊文件。你有將模塊文件移動到目錄/ mod的腳本嗎?那麼這是一個關於腳本或特定編譯器的問題 - 如何告訴編譯器它也應該在模塊中查找/ mod。 $ m_path是否已經設置,因爲腳本正在那裏移動文件?也許他們建議你應該使用編譯器選項來讓編譯器查看這個目錄。 gfortran提供了選項-M和-J(等同):「這個選項指定編譯模塊的'.mod'文件的位置,它也被添加到USE語句搜索的目錄列表中,缺省值是當前目錄「。你正在使用哪種編譯器?

0

謝謝M.S.B.我昨晚在你回覆之前就明白了。這是一個簡單的編譯命令行錯誤。我沒有告訴編譯器在哪裏尋找mod文件,因爲它們位於不同的目錄中。已經正確引導它,這一切都很好。

乾杯,克雷格