Fortran 90 kompilieren Ausgabe: undefined reference to <modulename>
Ich habe Probleme versuchen zu kompilieren eines einfachen fortran-Programm, das verwendet ein Modul in das gleiche Verzeichnis.
Ich habe 2 Dateien: test1.f90, die das Programm enthält, und modtest.f90, die das Modul enthält.
Dies ist test1.f90:
program test
use modtest
implicit none
print*,a
end program test
Dies ist modtest.f90:
module modtest
implicit none
save
integer :: a = 1
end module modtest
Beide Dateien sind im selben Verzeichnis. Ich kompilieren modtest.f90 und testen.f90 wie diese:
gfortran -c modtest.f90
gfortran -o test1 test1.f90
Aber dann bekomme ich diesen Fehler:
/tmp/cckqu8c3.o: In function `MAIN__':
test1.f90:(.text+0x50): undefined reference to `__modtest_MOD_a'
collect2: ld returned 1 exit status
Gibt es etwas, was ich bin fehlt?
Vielen Dank für die Hilfe
- Oder:
gfortran modtest.f90 test1.f90 -o test1
- Ich verstehe nicht, was Sie sagen. (Was Fragen zur Programmierung? Von "So", meinst du "StackOverflow" — wenn dem so ist, sollte es "SO". Fragen was ist wenn Sie nicht wissen, was?)
- Den Kommentar, den ich beantwortet zu haben scheint gelöscht worden. Ich denke, die person wurde gefragt, warum Gebäude war eine Frage der Programmierung.Trotzdem ist es fast ein Jahrzehnt her:-)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was du machst, ist nicht zu sagen, den linker, wo Referenz-Modul
modtest
ist so, dass Ihr code kann die Nutzung seiner Inhalte.Sollte dies funktionieren:
Etwas Kontext:
Den
-o
option weist den compiler, die Ausgabe des vollständigen build (kompilieren + link) in ein Programm namenstest1
. Dann liefern wir eine Datei, die wir kompilieren (test1.f90
). Schließlich sagen wir dem compiler zu prüfen, eine Datei, die enthält die kompilierte Ausgabe von einem anderen build (modtest.o
) und verlinken diese auf die kompilierte Ausgabe vontest1.f90
, und verwenden Sie den Inhaltmodtest.o
wenn Sie versuchen, zu Sortieren, Verweise in der test1.f90 mit Bezug zu den Modulmodtest
(in der Anweisunguse modtest
im Quellcode).So die Aussage sagt:
Bitte kompilieren und anschließend link
test1.f90
zumodtest.o
ist, und erzeugen Sie eine Datei namenstest1
als die endgültige Ausgabe.