2009-12-10 41 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文件,因为它们位于不同的目录中。已经正确引导它,这一切都很好。

干杯,克雷格