Problem mit gfortran

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
grisu17
Beiträge: 5
Registriert: 25.02.2024 14:29:05

Problem mit gfortran

Beitrag von grisu17 » 25.02.2024 14:47:01

Hallo,
vorweg vielen Dank für die Aufnahme ins Forum.
Ich hatte diese Frage schon im LinuxMintUsers Forum gestellt und dort wurde mir empfohlen die Frage hier noch mal zu stellen, da hier vielleicht noch Leute sind die sich besser mit Fortran auskennen. Nun zu meiner Frage/Problem.

Zu meinem Hintergrund, ich arbeite an einer Universität und wir brauchen für bestimmte FEM Berechnungen ein Programm das sich tochnog (das läuft sowohl unter Window als auch Linux) nennt und hier im besonderen zur Berechnung mit speziellen Stoffgesetzen eine Version die sich tochnog_user_supplied nennt und NUR unter Linux läuft.

Wir haben das ganze auch schon auf zwei älteren Workstations erfolgreich am laufen und wollten das ganze nun auf einer neuen Maschine zum laufen bringen. Leider bekommen wir beim Start der Berechnung im Terminal folgende Fehlermeldung:

tochnog_user_supplied: symbol lookup error: <Pfad>/umat.so: undefined symbol: _gfortran_matmul_r8

Auf dem neuen System ist genauso wie auf den alten Systemen GCC, G++, Gfortran (Versionen 9,11) installiert. Dieses wird alles zum compilieren der speziellen user.so und umat.so benötigt. Beim compilieren kamen anfangs nur warnings und keine Fehler. Ich hatte zwischenzeitlich auf dem neuen System alle Fortran, G++ und Gcc Versionen mittels der Anwendungsverwaltung deinstalliert und nach einem Neustart wieder installiert. Hierdurch lief dann auch das compilieren ohne jegliche Meldung durch.
Die Fehlermeldung beim Starten des Programms hat sich dann in diese verändert:

tochnog_user_supplied: symbol lookup error: <Pfad>/umat.so: undefined symbol: _gfortran_st_write

Die Pfade zu dem Programm und zu den Libs habe ich noch mal kontrolliert. Sie passen bei dem alten und neuen System überein. Auf dem neuen System ist der Pfad zu der User.so und umat.so in der LD_LIBRARY_PATH definiert. Bei den alten System wurden die Dateien mit root rechten in das lib Verzeichnis kopiert. Auch dieses habe ich im neuen System schon probiert aber es kommt der gleiche Fehler dabei raus.

Für Hilfe die das Problem löst wäre ich wirklich dankbar, da ich mit meinem (zugegebener Massen bescheidenen) Linux Kenntnissen am Ende bin. Lösungsvorschläge kann ich erst morgen prüfen, da ich erst dann wieder am Institut bin, daher bitte nicht wundern falls ich heute nicht mehr reagiere.

Grüße
grisu17

System alt und neu: Dual-Boot: Win10/11 und LinuxMint 21.3 - Cinnamon
Kernel 5.15.0-94-generic
Updates werden regelmäßig durchgeführt
System alt: 2 x Xeon E52620v3, 32 GB Ram
System neu: Ryzen9 7950X, 32 GB Ram

Benutzeravatar
schorsch_76
Beiträge: 2544
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit gfortran

Beitrag von schorsch_76 » 25.02.2024 19:26:20

Wenn ich nach diesem Symbol suche lande ich hier [1]. Auch [2] zeigt in die Richtung das Importe bei dir fehlen könnten.
Ist es möglich dieses Programm neu zu übersetzen oder ist der Quellcode nicht verfügbar?

[1] https://gcc.gnu.org/onlinedocs/gfortran/MATMUL.html
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37953

grisu17
Beiträge: 5
Registriert: 25.02.2024 14:29:05

Re: Problem mit gfortran

Beitrag von grisu17 » 26.02.2024 12:04:07

Ich denke das der MATMUL "Befehl" richtig eingesetzt wurde. Aber der zweite Punkt erscheint mir im Moment der vielversprechenste zu sein, da ja immer irgendwelche links zu fehlen scheinen.
Der Quellcode der zu kompilierenden Dateien liegt mir vor. Leider hilft mir das nichts da ich nicht so tief im Programmieren drin bin.
In der makefile sieht die Zeile mit Fortran wie folgt aus:

gfortran -finit-local-zero -fPIC -c umat.f

Könnte hier irgendwas vergessen worden sein? In der Datei umat.f wird per "include" auf drei vorhandene andere Dateien (.f) verwiesen, in denen nach meiner Einschätzung die mathematischen Vorgänge für das Stoffgesetz niedergelegt sind.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Problem mit gfortran

Beitrag von MSfree » 26.02.2024 13:25:51

Stell mal das ganze Makefile hier ein:
pastebin/

Vermutlich muß man den Linkbefehl im Makefile umbauen. Hört sich schlimmer an als es ist :wink:

grisu17
Beiträge: 5
Registriert: 25.02.2024 14:29:05

Re: Problem mit gfortran

Beitrag von grisu17 » 26.02.2024 14:30:45

Ich hoffe ich mache das mit dem link jetzt richtig ;)

https://nopaste.debianforum.de/42120

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Problem mit gfortran

Beitrag von MSfree » 26.02.2024 14:58:13

grisu17 hat geschrieben: ↑ zum Beitrag ↑
26.02.2024 14:30:45
Ich hoffe ich mache das mit dem link jetzt richtig ;)
Perfekt.
Die ist ja deutlich kleiner als ich befürchtet hatte. :mrgreen:

Ich würde es damit versuchen, die gcc durch gfortran zu ersetzen:

Aus

Code: Alles auswählen

        gcc -shared -Wl,-soname,umat.so -o umat.so umat.o
würde dann

Code: Alles auswählen

        gfortran -shared -Wl,-soname,umat.so -o umat.so umat.o
Achtung, Makefiles sind empfindlich auf TABs. Der Leerraum vor gcc bzw gfortran muß ein Tabulatorzeichen sein!

grisu17
Beiträge: 5
Registriert: 25.02.2024 14:29:05

Re: Problem mit gfortran

Beitrag von grisu17 » 26.02.2024 17:30:12

Wow, krass :)
Anscheinend ist es das gewesen. Zumindest rechnet der Rechner jetzt seit ca. 45 Minuten an dem Testmodel ohne Fehlermeldung, die normalerweise schon in den ersten Sekunden erscheint.
Kannst Du einem Laien kurz erklären woran das jetzt genau lag? Sind Gcc und Gfortran Programme die Code erzeugen und dadurch das Gcc "Übersetzungsfehler" macht findet der endgütige Code nicht die entsprechenden "symbols"?

Auf jeden Fall schon mal einen riesen Dank :hail:

Benutzeravatar
ralli
Beiträge: 3919
Registriert: 02.03.2008 08:03:02

Re: Problem mit gfortran

Beitrag von ralli » 26.02.2024 17:54:18

Ich möchte diesen Thread nicht kapern, aber er hat mich auf Fortran neugierig gemacht. Ergebnis:

- schnell erlernbar

- überschaubare Variablentypen

- sehr schnelle Übersetzung mit Gfortran

Kein Wunder, das diese Hochsprache an Universitäten noch einen hohen Rang besitzt. Hab eine gute deutsche Dokumentation von der Universität Bayreuth und Universität München "Programmieren in Fortran 90/95" gefunden.

Gefällt mir sehr.

Gruß ralli
Zuletzt geändert von ralli am 26.02.2024 17:57:34, insgesamt 1-mal geändert.
Wer nicht lieben kann, muß hassen. Wer nicht aufbauen kann muß zerstören. Wer keine Brücken baut, muß spalten.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Problem mit gfortran

Beitrag von MSfree » 26.02.2024 17:57:07

grisu17 hat geschrieben: ↑ zum Beitrag ↑
26.02.2024 17:30:12
Sind Gcc und Gfortran Programme die Code erzeugen und dadurch das Gcc "Übersetzungsfehler" macht findet der endgütige Code nicht die entsprechenden "symbols"?
Gcc und gfortran sind einerseits Compiler, die aus Quelltext Maschinencode erzeugen. Aus einer .f-Datei wird dann eine .o-Datei.

Andererseits sind gcc und gfortran auch Linker, die aus den erzeugten .o-Dateien entweder das Endprodukt Executable oder, wie in deinem Fall, ein shared Object (.so-Datien) erzeugen. Executables sind vergleichbar mit .exe-Dateien unter Windows, shared Objects sind vergleichbar mit .dll-Dateien unter Windows. Beim Erzeugen dieser Endprodukte kann es nötig sein, je nach Programmiersprache unterschiedliche Initialisierungsdateien und Bilbiothemen dazu zu linken. gcc link z.B. Startcode für in C geschriebene Programme dazu, g++ nimmt Startcode für in C++ geschrieben Programme und gfortran macht das gleiche für Fortranprogramme.

Theoretisch könnte man die Programme auch ganz low-level mit ld linken, müßte dann aber wissen, welcher Starcode gebraucht wird. Letzten Endes führen gcc, g++ und gfortran unten drunter ld aus und geben ihm den passenden Startcode mit.

Ein deinem Fall wurde mit gcc versucht, Starcode und Bibliotheken für in C geschrieben Programme zu Fortrancode zu linken, und dabei fehlte dann aben etwas, was gfortran "besser wußte".

grisu17
Beiträge: 5
Registriert: 25.02.2024 14:29:05

Re: Problem mit gfortran

Beitrag von grisu17 » 27.02.2024 11:43:04

Vielen Dank nochmals. Das Problem ist tatsächlich vollständig gelöst.

Auch und besonders für die zusätzliche erhellende Erläuterung :THX:

Antworten