Herramientas de usuario

¡Esta es una revisión vieja del documento!


Tutorial de Compilación en FOTRAN

FORTRAN: Programa de Ejemplo: Rutina mail y dos subrutinas

Existen varias convenciones para usar el compilador de FORTRAN. Estas son:

  1. El nombre del fichero que contiene el código fuente en fortran debe terminar con .f
  2. El compilador se incova con f77.
  3. El compilador tiene varias opciones disponibles (-c, -o, -p, -S)
  4. Se hacen preconexiones para stdin y stdout

Este es el ejemplo hola.f de código fuente de fortran que se utilizará:

      program calling
      write(6,100)
100   format (' Hello from main!',/)
      write(6,110)
110   format(' Calling subroutine1!',/)
      call sub1
      write(6,120)
120   format(t15' Back from subroutine1!',/)
      write(6,130)
130   format(' Calling subroutine2!',/)
      call sub2
      write(6,140)
140   format(t15' Back from subroutine2!',/)
      write(6,150)
150   format(' That's all, folks!')
      end
      subroutine sub1
      write(6,200)
200   format(t20,' Hello from subroutine1!',/)
      end
      subroutine sub2
      write(6,210)
210   format(t20,' Hello from subroutine2!',/)
      end

FORTRAN: Compilando un programa

El compilador FORTRAN se incova con:

  Command Format:  f77
  

Para compilar el programa hola.f en un programa ejecutable, use el siguiente comando:

f77 hola.f

Si no se proveen opciones, f77 acepta código fuente FORTRAN y programas en lenguaje ensamblador que sigan las convenciones delineadas anteriorlemten. Compilará, ensamblará, y cargará dichos programas prara producir un ejecutable llamado a.out. La utilidad f77 da como salida el código objeto en ficheros con el nombre del fichero de base (todo antes del punto) como fuente, pero con una extensión de nombre de fichero .o. El a.out significa “salida de ensablador”. Esta es pod defecto.

<ocde bash> $f77 hola.f $a.out Hello from main!

Calling function1!

           Hello from function1!
      Back from function1!

Calling function2!

           Hello from function2!
      Back from function2!

That's all! $ </code>

NOTE: The a.out file that was created by the f77 utility has the following permissions:

            usuario - leer, escribir, y ejecutar
            grupo - leer y ejecutar
            otro - Leer y ejecutar

It is not necessary for you to change the permissions using the chmod command because the f77 utility set the execute permissions for you.

FORTRAN: Renombrar el módulo ejecutable

Podrá renombrar el módulo ejecutable usando el comando mv. Los permisos de fichero quedarán igual que antes de renombrar el fichero.

$mv a.out hello
$hello
Hello from main!
 
Calling function1!
 
             Hello from function1!
 
        Back from function1!
 
Calling function2!
 
             Hello from function2!
 
        Back from function2!
 
That's all!
$

FORTRAN: Dar un nombre al fichero de salida

Es posible tener la salida enviada a un fichero dado, en lugar del a.out por defecto, usando el siguiente comando:

  Command Format:  f77 -o output source
  output - the name of the executable file
  source - the name of the Fortran source code file

La opción -o le dice a la utilidad f77 que le diga al editor de enlaces que use el nombre proisto para la salida, en lugar de usar el a.out por defecto.

NOTE: It is not necessary for the -o option to appear after the f77 command. The filename that appears after the -o is the name of the output file. For example, f77 source -o output is the same as f77 -o output source.

Sample Session:

$f77 -o hola.f
$hola
Hello from main!
Calling function1!
 
             Hello from function1!
 
        Back from function1!
 
Calling function2!
 
             Hello from function2!
 
        Back from function2!
 
That's all!
$

FORTRAN: Producir un listado de Ensamblador

Esta opción hace que f77 compile programas de fortran y dieje los programas de código ensa,blador en un fichero, con la extensión .s.

  Command Format:  f77 -S hola.f
  -S = Compile only

Sample Session:

$f77 -S  hello.f
$ls -c
example.f         hello     hex.c     octal.c
hello.c           hello.s   multiply.c
$

El fichero hola.s contiene el listado de ensamblado.

FORTRAN: Rutina Principal y Dos subrutinas en tres ficheros fuete separados

Sample Session:

</code bash> $cat main.f

   program calling
   write(6,100)

100 format (' Hello from main!',/)

   write(6,110)

110 format(' Calling subroutine1!',/)

   call sub1
   write(6,120)

120 format(t15' Back from subroutine1!',/)

   write(6,130)

130 format(' Calling subroutine2!',/)

   call sub2
   write(6,140)

140 format(t15' Back from subroutine2!',/)

   write(6,150)

150 format(' That's all, folks!')

   end

$cat sub1.f

   subroutine sub1
   write(6,200)

200 format(t20,' Hello from subroutine1!',/)

   end

$cat sub2.f

   subroutine sub2
   write(6,210)

210 format(t20,' Hello from subroutine2!',/)

   end

</code>

FORTRAN: Compilar pero no producir un módulo ejecutable

Al usar el programa anterior, el siguiente comando compilará pero no producirá un módulo ejecutable

  Command Format:  f77 -c main.f sub1.f sub2.f
  1. c = Compile, but do not load object files. This option causes f77 to compile and/or assemble source code programs and leave the corresponding object programs in files with filename extensions of .o.
$f77 -c main.f sub1.f sub2.f
main.f:
     MAIN: calling:
sub1.f:
     sub1:
sub2.f:
     sub2:
$ls a.out *.o
a.out not found
funct1.o
funct2.o
hello.o
main.o
sub1.o
sub2.o
$                                                             3

La opción -c provoca que el sistema de compilación suprima la fase de edición de enlace. Esto produce un fichero o ficheros objeto, en este ejemplo, main.o, sub1.o sub2.o) que pueden ser enlazados posteriormente con f77 sin opciones.

FORTRAN: Compiladno ficheros objeto para producir un módulo ejecutable

El comando para producir un módulo ejecutable a partir de varios ficheros objeto es la siguiente manera:

  Command Format:  f77 obj_1 obj_2 obj_3
  obj_1 through obj_n - the object files
$f77 main.o sub1.o sub2.o
$ls -C
funct1.o funct2.o hello.o main.o sub1.o sub2.o a.out
$

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información