lgfortran nicht gefunden
Ich bin mit Ubuntu 10.04 und versucht zu kompilieren, einige-code, der verwendet gfortran. Irgendwann Makefiles bedeutet:
-L. -lgfortran
und ich bekomme die Fehlermeldung
/usr/bin/ld: cannot find -lgfortran
obwohl es installiert ist:
ldconfig -p | grep fortran
libgfortran.so.3 (libc6,x86-64) => /usr/lib/libgfortran.so.3
Wie kann ich es beheben?
P. S: Das Makefile:
## FLAGS
CC:= gcc
C++:= g++
CFLAGS:= -c -O -Dintel -g
FC:= gfortran
FFLAGS:= -c -O -cpp -g
LD:= g++
LDFLAGS:= -O
WETTER_CGAL_FLAGS:= -g
#WETTER-Data
WETTER_cgal: weather.cpp surface_alg.h $(WETTER_CGAL_OBJECTS) WATT_interface.h data.cpp
$(C++) $(WETTER_CGAL_FLAGS) -c weather.cpp -frounding-math
$(C++) -c data.cpp -frounding-math
$(LD) $(WETTER_CGAL_OBJECTS) weather.o data.o -o WETTER_cgal -L. -lgfortran -lgmp -lCGAL -frounding-math -fp-model
- Könnten Sie eine minimale Makefile, der den Fehler erzeugt? Es muss unbedingt seine Schuld, da Sie Ihre shell-Umgebung scheint in Ordnung.
- getan, der Fragen wurde so angepasst, dass Informationen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tut, indem Sie jede chance, Ihre
gfortran
version unterscheiden sich von der version Ihrerg++
? Oder vielleicht ist es in einem anderen Speicherort installiert?Den
-lname
option (in diesem Fallname
istgfortran
) weist den linker an, Suche nach einer library-Datei namenslibname.a
im library Suchpfad. Wenn gefunden wird und keine statische Verbindung wird erzwungen durch die-[B]static
option, die der linker durchsucht, wieder einmal fürlibname.so
und link gegen es statt dessen (wenn gefunden). Wennlibname.a
nicht gefunden, wird ein Fehler gegeben werden, trotz der Anwesenheit vonlibname.so
.Sollte es eine
libgfortran.a
irgendwo in Ihremgfortran
installation. Suchenfind
und geben Sie den Pfad zug++
mit-L/path/to/compiler/libs
. Wenng++
ist die gleiche version wie Ihrgfortran
den Pfad zulibgfortran.a
wird bereits in der library search path (da sowohl C/C++ und Fortran statische Bibliotheken befinden sich im gleichen Ort). Es wird nicht vorhanden sein, wenn beide Compiler unterscheiden sich in Ihrer version allerdings.Beispielsweise auf einem 64-bit-RedHat-basiertes system
libgfortran.a
befindet sich in/usr/lib/gcc/x86_64-redhat-linux/<GCC version>/
während der gemeinsamenlibgfortran.so.*
befinden sich in/usr/lib64
.Ist eine alternative Lösung zu ersetzen
-lgfortran
mit/usr/lib/libgfortran.so.3
.Den
-L.
option ist eher bezogen auf-lCGAL
als-lgfortran
.Ich hatte das gleiche Problem heute beim kompilieren ATLAS und war in der Lage, es zu beheben mit einem symbolischen link von
libgfortran.so.3
zulibgfortran.so
.ld.so.conf.d/
?Nur stellen Sie sicher, dass Sie:
Und
Ist die gleiche.
Enthält die verschiedenen Versionen.
ZB: Wenn
gcc--version returns 4.7.3
undgfortran --version 4.8
eine einfache hacken könnte sein, das folgende zu tun.Sollte es funktionieren.
alternatives --config gcc
Befehl wählen Sie die entsprechende version von gccIch hatte das gleiche problem und versucht Sie den folgenden Befehl. Gelöst wurde das problem mit dieser:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so