lgfortran没找到

Ope*_*way 10 ubuntu linker fortran makefile gfortran

我正在使用Ubuntu 10.04并尝试编译一些使用gfortran的代码.在某些时候,Makefile会:

-L. -lgfortran 
Run Code Online (Sandbox Code Playgroud)

我得到了错误

/usr/bin/ld: cannot find -lgfortran
Run Code Online (Sandbox Code Playgroud)

虽然安装了:

ldconfig -p  |  grep   fortran
    libgfortran.so.3 (libc6,x86-64) => /usr/lib/libgfortran.so.3
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

PS: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
Run Code Online (Sandbox Code Playgroud)

Hri*_*iev 12

您的gfortran版本是否与您的版本不同g++?或者它可能安装在不同的位置?

-lname选项(在这种情况下namegfortran)指示链接器来搜索文件称为库libname.a在库搜索路径.如果找到并且该-[B]static选项不强制执行静态链接,则链接器将再次搜索libname.so并链接(如果找到).如果libname.a没有找到,尽管存在,也会给出错误libname.so.

libgfortran.a你的gfortran安装应该有一个地方.搜索它find,并提供路径g++-L/path/to/compiler/libs.如果与路径g++相同的版本已经存在于库搜索路径中(因为C/C++和Fortran静态库都位于同一位置).如果两个编译器的版本不同,它将不会出现.gfortranlibgfortran.a

例如,基于64位RedHat的系统libgfortran.a位于/usr/lib/gcc/x86_64-redhat-linux/<GCC version>/共享libgfortran.so.*位于的位置/usr/lib64.

另一种解决方案是替换-lgfortran/usr/lib/libgfortran.so.3.

-L.选项,而相关的-lCGAL不是-lgfortran.


han*_*nes 5

我编译ATLAS当今天有同样的问题,并能够使用从符号链接来修复它libgfortran.so.3libgfortran.so