Compiling Fortran:修订间差异
来自Ubuntu中文
跳到导航跳到搜索
Dbzhang800(留言 | 贡献) |
Dbzhang800(留言 | 贡献) |
||
第11行: | 第11行: | ||
== 单个源文件生成可执行程序 == | == 单个源文件生成可执行程序 == | ||
传统的 Fortran 程序只能用大写字符书写,而且每行前六个字符为特定用途所保留。第一列为字符 C 所保留,用来表征整行都是注释。第二列到第六列是为标号预留的。代码从第七列开始。下面是示例程序采用的是传统的 Fortran 格式: | |||
C helloworld.f | |||
C | |||
PROGRAM HELLOWORLD | |||
WRITE(*,10) | |||
10 FORMAT('hello, world') | |||
END PROGRAM HELLOWORLD | |||
编译器 GCC 并不要求所有代码都大写,但是,除非有其他说明,这种固定的格式都是要求的。下面的命令将该程序编译成可执行文件: | |||
$ g77 helloworld.f -o helloworld | |||
命令 g77 是设置过 Fortran 程序所需基本环境的 gcc 的一个前端。同样的结果可以通过下面 gcc 的命令来实现: | |||
$ gcc helloworld.f -lfrtbegin -lg2c -lm -shared-libgcc -o helloworld | |||
库文件 libfrtbegin.a (通过命令行选项 -lfrtbegin 被调用) 包含运行和终止一个 Fortran 程序所必须的开始和退出代码。库文件 libg2c.a 包含 Fortran 底层的输入输出等所需要的运行函数。库文件 libm.a 是系统数学库。选项 -shared-libgcc 指定使用共享的标准库 libgcc。 | |||
GCC 也允许用自由的格式书写 Fortran 代码。注释以感叹号(!)开始直到行尾。先前的程序采用自由格式重写如下,其中语句、标号都可从任一列开始: | |||
! helloworldff.f | |||
! | |||
Program Helloworld | |||
write(*,10) | |||
10 format('hello, world') | |||
end Program Helloworld | |||
该程序通过在命令行中加入选项 -ffree-form 进行编译,如下: | |||
$ g77 -ffree-form helloworldff.f -o helloworldff | |||
由于两种格式的具有很大的区别,程序书写是只能选择其中的一种格式进行书写。 | |||
== == |
2008年3月13日 (四) 15:05的版本
Fortran 编程中相关文件后缀
.a 静态库 (archive)
.f, .for, .FOR Fortran源代码(不需编译预处理)
.F, .fpp, .FPP Fortran源代码(需要编译预处理)
.r Fortran源代码(需要RatFor编译预处理)
.o 对象文件
.s 汇编语言代码
.so 动态库
单个源文件生成可执行程序
传统的 Fortran 程序只能用大写字符书写,而且每行前六个字符为特定用途所保留。第一列为字符 C 所保留,用来表征整行都是注释。第二列到第六列是为标号预留的。代码从第七列开始。下面是示例程序采用的是传统的 Fortran 格式:
C helloworld.f C PROGRAM HELLOWORLD WRITE(*,10) 10 FORMAT('hello, world') END PROGRAM HELLOWORLD
编译器 GCC 并不要求所有代码都大写,但是,除非有其他说明,这种固定的格式都是要求的。下面的命令将该程序编译成可执行文件:
$ g77 helloworld.f -o helloworld
命令 g77 是设置过 Fortran 程序所需基本环境的 gcc 的一个前端。同样的结果可以通过下面 gcc 的命令来实现:
$ gcc helloworld.f -lfrtbegin -lg2c -lm -shared-libgcc -o helloworld
库文件 libfrtbegin.a (通过命令行选项 -lfrtbegin 被调用) 包含运行和终止一个 Fortran 程序所必须的开始和退出代码。库文件 libg2c.a 包含 Fortran 底层的输入输出等所需要的运行函数。库文件 libm.a 是系统数学库。选项 -shared-libgcc 指定使用共享的标准库 libgcc。
GCC 也允许用自由的格式书写 Fortran 代码。注释以感叹号(!)开始直到行尾。先前的程序采用自由格式重写如下,其中语句、标号都可从任一列开始:
! helloworldff.f ! Program Helloworld write(*,10) 10 format('hello, world') end Program Helloworld
该程序通过在命令行中加入选项 -ffree-form 进行编译,如下:
$ g77 -ffree-form helloworldff.f -o helloworldff
由于两种格式的具有很大的区别,程序书写是只能选择其中的一种格式进行书写。