Fortran 90/95: Unterschied zwischen den Versionen

Aus Physik
Wechseln zu: Navigation, Suche
K (gfortran 4.6.1)
K (gfortran 4.6.1)
Zeile 12: Zeile 12:
 
=Probleme=
 
=Probleme=
  
== gfortran 4.6.1 ==
+
== gfortran 4.6.1 4.6.2==
  
 
Die Libraries von gfortran 4.6.1 und 4.6.2 kollidieren in manchen Fällen mit Systemprogrammen und deren Libraries. Daher wurden sie wieder aus dem Standardpfad für Libraries entfernt. Wenn sie Compiler der GNU COmpiler Collection 4.6.[12] verwenden, müssen sie daher den Pfad  
 
Die Libraries von gfortran 4.6.1 und 4.6.2 kollidieren in manchen Fällen mit Systemprogrammen und deren Libraries. Daher wurden sie wieder aus dem Standardpfad für Libraries entfernt. Wenn sie Compiler der GNU COmpiler Collection 4.6.[12] verwenden, müssen sie daher den Pfad  

Version vom 16. Jänner 2012, 16:38 Uhr

Welche Compiler gibt es?

  • gfortran
  • gfortran-4.6.1
  • g95
  • f90-abs
  • f90-pgi, pgf90
  • f95-intel, ifort
  • f95-lah, lf95
  • f95-nag, f95

Probleme

gfortran 4.6.1 4.6.2

Die Libraries von gfortran 4.6.1 und 4.6.2 kollidieren in manchen Fällen mit Systemprogrammen und deren Libraries. Daher wurden sie wieder aus dem Standardpfad für Libraries entfernt. Wenn sie Compiler der GNU COmpiler Collection 4.6.[12] verwenden, müssen sie daher den Pfad

  LD_LIBRARY_PATH=/afs/itp.tugraz.at/opt/gcc/4.6.1/arch-amd64/lib64/
  LD_LIBRARY_PATH=/afs/itp.tugraz.at/opt/gcc/4.6.2/arch-amd64/lib64/

vor dem Verwenden des Compilers und vor dem Ausführen der erzeugten Programme setzen. Sie können das auch in den Init-Skripten ihrer Shell setzen, müssen dann aber damit leben, daß manche Programme (pdftk, Xnest, ...) nicht mehr funktionieren werden.

Linken bringt eine Fehlermeldung über fehlende Funktion: undefined reference to `s_wsfi'

Weil g95 derzeit noch nicht uneingeschränkt benutzbar ist, verwenden wir für Fortran 90 und Fortran 95 fast ausschließlich die kommerziellen Compiler. Diese sind aber in großem Umfang auf Bibliotheken angewiesen, die mit einem Compiler aus der GCC (GNU Compiler Collection, bestehen aus gcc, g77, ...) erstellt wurden und bestimmte Funktionen aus der Runtime-Umgebung der GCC benötigen.

Deshalb ist es manchmal notwendig die Bibliotheken libg2c und (seltener) libgcc zusätzlich mitzulinken. Diese Libraries sind aber vom verwendeten System und dem Compiler-Release abhängig, den korrekten Pfad findet ihr mit dem Kommando gcc -print-file-name=libg2c.a . Um ein Beispielprogramm der NAG-Libs mit dem F95-Compiler von Lahey verwende ich zum Beispiel folgendes Makefile:

  EXTRALIBS=$(shell gcc -print-file-name=libg2c.a) $(shell gcc -print-file-name=libgcc.a)
  g01aafe-lahey: g01aafe.f
          f95-lah g01aafe.f -o g01aafe-lahey \
                  -L /afs/itp.tugraz.at/opt/NAG/2003/fllux20dg/ -lnag \
                  $(EXTRALIBS)