Vermutlich unterscheidet sich Ihre gfortran
Version von der Version Ihres g++
? Oder ist es vielleicht an einem anderen Ort installiert?
Die Option -lname
(in diesem Fall name
ist gfortran
) weist den Linker an, im Bibliothekssuchpfad nach einer Bibliotheksdatei namens libname.a
zu suchen. Wenn gefunden und keine statische Verknüpfung durch die Option -[B]static
erzwungen wird, sucht der Linker erneut nach libname.so
und verbindet stattdessen (falls gefunden). Wenn libname.a
nicht gefunden wird, wird trotz des Vorhandenseins von libname.so
ein Fehler ausgegeben.
Es sollte irgendwo in Ihrer libgfortran.a
Installation ein gfortran
sein. Suchen Sie danach mit find
und geben Sie den Pfad zu g++
mit -L/path/to/compiler/libs
an. Wenn g++
dieselbe Version wie gfortran
ist, ist der Pfad zu libgfortran.a
bereits im Bibliothekssuchpfad vorhanden (da sich sowohl statische C / C ++ - als auch Fortran-Bibliotheken an derselben Stelle befinden). Es wird nicht vorhanden sein, wenn beide Compiler sich in ihrer Version unterscheiden.
Auf einem RedHat-basierten 64-Bit-System befindet sich beispielsweise libgfortran.a
in /usr/lib/gcc/x86_64-redhat-linux/<GCC version>/
, während die gemeinsam genutzte libgfortran.so.*
in /usr/lib64
liegt.
Eine alternative Lösung besteht darin, -lgfortran
durch /usr/lib/libgfortran.so.3
zu ersetzen.
Die Option -L.
ist eher verwandt mit -lCGAL
als mit -lgfortran
.
Stellen Sie nur sicher, dass Sie:
%Vor%Und
%Vor%Ist das Gleiche.
%Vor%Enthält die verschiedenen Versionen.
ZB: Wenn gcc--version returns 4.7.3
und gfortran --version 4.8
, könnte ein einfacher Hack folgendes tun:
Es sollte funktionieren.
Ich hatte das gleiche Problem und habe den folgenden Befehl ausprobiert. Das Problem wurde damit gelöst:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so