Software > Software (16-/32-Bit)

Fortran (gfortran) für ST

(1/3) > >>

Thorsten Otto:
Wie in dem anderen Thread geschrieben, habe ich mal versucht den fortran-compiler von GNU zu bauen, sowohl als cross-compiler als auch native. Lässt sich auch ohne Schwierigkeiten übersetzen, erzeugt auch brav ST Programme, leider funktionieren diese nicht :(

Ich selber hab leider überhaupt keine Ahnung von Fortran (einige der wenigen Sprachen die ich nicht beherrsche :), vlt halt ja jemand ne Idee. Versucht hab ich es mit erstmal mit folgenden Programmen:


--- Code: ---      print *, "Hello, world"
      END

--- Ende Code ---

Ergebnis: bricht ab mit

--- Code: ---Fortran runtime error: End of record
--- Ende Code ---

Programm 2:

--- Code: ---      CHARACTER(len=*), parameter :: str = "Hello, world"//achar(10)
      INTEGER :: i
      DO i = 1, len_trim(str)
         CALL fput(str(i:i))
      END DO
      END

--- Ende Code ---

Ergebnis: läuft normal durch, gibt aber nix aus..

Irgendeiner 'ne Idee, was da falsch läuft? Hatte erst gedacht es würde als cross-compiler nicht gehen, für mingw funktioniert es aber, und andere haben wohl auch schon Versionen für ARM gebaut.

goetz @ 3rz:

--- Zitat von: Thorsten Otto am Mo 25.02.2019, 03:06:27 ---Wie in dem anderen Thread geschrieben, habe ich mal versucht den fortran-compiler von GNU zu bauen, sowohl als cross-compiler als auch native. […]

Irgendeiner 'ne Idee, was da falsch läuft? Hatte erst gedacht es würde als cross-compiler nicht gehen, für mingw funktioniert es aber, und andere haben wohl auch schon Versionen für ARM gebaut.

--- Ende Zitat ---

https://s1.hoffart.de/~goetz/collatz/Atari-ST/Prospero-Fortran/COLLATZ.FOR.txt  – tut mit Atari Prospero Fortran.

czietz:
Wenn Du mir eine Version für Windows (cygwin oder mingw) erstellst, probiere ich gerne mit. Auch wenn ich -- wie gesagt -- auch nur Fortran-Einsteiger bin.

Thorsten Otto:

--- Zitat von: gh-baden am Mo 25.02.2019, 22:53:31 ---tut mit Atari Prospero Fortran.

--- Ende Zitat ---

Danke, aber in dem Fall geht es darum einen frei erhältlichen fortran-compiler zu haben, um z.B. den original linpack-benchmark übersetzen zu können.


--- Zitat von: czietz ---Wenn Du mir eine Version für Windows (cygwin oder mingw) erstellst, probiere ich gerne mit

--- Ende Zitat ---

Bitte schön (für cygwin32):

http://tho-otto.de/download/mint/gcc-8.3.0-mint+fortran-bin-cygwin32.tar.xz
http://tho-otto.de/download/mint/gcc-8.3.0-mint+fortran.tar.xz

Script und Bin-Archive sollten identlsch zum normalen Download sein, einzige Änderung:


--- Code: ------ build-gcc.sh.orig   2019-02-26 03:46:31.101356331 +0100
+++ build-gcc.sh        2019-02-25 18:53:07.470170047 +0100
@@ -204,7 +204,7 @@
 
 enable_lto=--disable-lto
 enable_plugin=--disable-plugin
-languages=c,c++
+languages=c,c++,fortran
 ranlib=ranlib
 STRIP=${STRIP-strip -p}

--- Ende Code ---

Wenn du rumprobierst, musst du es allerdings sowieso neu übersetzen. Wenn du das beiliegende Script benutzt, werden die Programme in einem Verzeichnis  binary7-package erzeugt (von dort, wo du das Script startest). Dort sollten vorher die cross-binutils vorhanden sein (zumindest mach ich das so, bin mir gerade nicht so sicher obs auch funktioniert wenn er sich die z.B. aus /usr/bin holt).

Übersetzen dauert bei mir (VirtualBox auf linux mit I7, mit einer emulierten CPU) ca 50min. Auf echter Hardware, vor allem mit parallelen Jobs, dürfte es schneller gehen (für linux sinds knapp 5min).

Oh, und noch eine Sache: um die libgfortran zu übersetzen, brauchst du einen kleinen patch in mintlib für math.h, den ich erst letztens gepusht habe (nextafter muss dort deklariert sein).

Vermutlich musst du auch noch einige Pakete installieren. Spontan fallen mir da flex, bison, isl, mpc, gmp, mpfr ein. Ansonsten bei Fragen einfach anschreiben ;)

czietz:
Hm, also ich habe damit sowohl Dein Hello-World als auch das 1000d.f compiliert. Laufen beide. Einziges Problem: sie machen eben nur einen Line-Feed als Zeilenumbruch, d.h. die Textdarstellung auf dem Bildschirm ist unschön.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln