Gfortran

来自Ubuntu中文
跳到导航跳到搜索

gFortran Getting Started

fortran源码,linux下多数人使用intel的compiler。其实gFortran也不失为一个好的编译器。这份Wiki只是官方网页一个简单小结。

1、source中未使用外部库链接的,直接执行:

gfortran foo.f/f90 -o foo
./foo

如没有"-o"选项,生成a.out文件,这显然不是我想要的。:D

2、gFortran分两部分:compiler and library。如果gFortran不是标准安装的,编译source后执行,可能找不到lib,这时可以加入"-static"选项:

gfortran -static foo.f/f90 -o foo

gFortran会将库建在所生成程序内部。

3、FortranSource有77和90两种书写格式,gFortran默认根据后缀进行compile。如果想自定义,例如foo.f是用90格式写的,可执行:

gfortran -ffree-form foo.f -o foo

大写的后缀名,gFortran会预执行该程序。

4、多source文件时,先compile不含PROGRAM语句段的source文件,各自生成foo1.o,foo2.o等。再一起编译。例如:

gfortran -c foo1.f/f90
gfortran -c foo2.f/f90
gfortran main.f/f90 foo1.o foo2.o -o main

5、foo.f95的,加选项"-std=f95",.f2003的,目前支持尚不完整。顺便说,gFortran unstable版4.3.x将支持pointer。

下面还有一些可能常用到的options。

"-fbounds-check":检查列表序列脚标是否超出
"-ffree/ffix-line-length-n":设置最大columns。77默认:72;90默认:132。n若设为"0"或"none",则不限有效行数
"-fimplicit-none":等同于在f90每段sub中声明"IMPLICIT NONE",且source中implicit语句优先
"-fmax-error-n":意义如词义
"-fsyntax-only":不编译,只检查语法
"-fexternal-blas":使用BLAS库函数,替代gFortran默认的函数