道歉,如果这太天真或显而易见,但经过一段时间的搜索,我并不是100%确定我理解fortran / unix界面。我的不确定性是关于在将fortran程序编译成unix可执行文件时遇到的.src,.f,然后.o和.out文件的性质。这样的谷歌文件扩展很难。但是如果你能告诉我我是否已经做到这一点,我真的很感激它!
.src是源文件,其中包含多余的fortran代码
.f是'主机语言特定包含文件',它告诉您的fortran编译器有关源代码的一些信息。它有时是互动的
---获得.o或.out文件后,可以扔掉.src和.f文件,是吗?
.o是二进制目标文件,它来自编译但不链接fortran .f和.src文件。它包含相同的肉,但现在转换为机器特定的说明?
.out是可执行的链接对象文件,它仍然依赖于.o文件,并且是特定于机器的。是不是真的需要.out文件扩展名,经常被省略?
我认为这涵盖了它。感谢您的任何更正或进一步说明。
凯尔
答案 0 :(得分:5)
这些文件扩展名没有任何内容;如你所说,它们甚至可以省略,或者你可以自己编造。但是,如果使用传统的方法,它会让生活变得更加容易。
我从未见过.src
扩展程序。源文件所在的目录通常称为./src
;也许你已经看过了。
通常,源代码(纯文本)位于扩展名为.f
或.f90
的文件中。第一个表示固定源表单(“旧样式”),第二个表示自由源表单(“现代”)。一些编译器将大写文件扩展名(.F
和.F90
)解释为必须首先通过预处理器运行源代码。不要让编译器使用这些解释的扩展,所有这些也可以通过将标志传递给编译器来明确声明/否决。
源代码的编译产生目标代码(您提到的机器特定指令),包含在目标文件中,通常以.o
作为扩展名(有时为.obj
或其他)。
创建目标文件后,您确实可以丢弃源代码文件,但您不希望这样做。您希望修复最有可能发生的任何错误,并保留它们以便将来更改您的程序。
必须链接目标代码以生成最终的可执行文件。如果您有多个目标文件,它们将绑定在一起,并包含您引用的任何系统/外部库代码。在Unix上,如果没有为可执行文件指定名称,则获取的默认名称通常为a.out
。同样,您可以通过将参数传递给编译器来否决这一点。
答案 1 :(得分:1)
不,Fortran代码通常是.f或.f90文件。更详细地说,Fortran源代码通常具有扩展名.f如果它使用固定源格式(Fortran 77和早期版本的标准源格式)或.f90它使用自由源格式(从Fortran 90开始)。
答案 2 :(得分:1)
获得.o或.out文件后,可以扔掉.src和.f文件,是吗?
没有。作为描述各种后缀约定的答案的补充,我建议您不删除Fortran源文件(描述中的.src
或.f
文件)。如果您想修改程序,或者需要调查并修复运行可执行文件(a.out
)时发现的错误,则需要这些文件。