lgfortran未找到(lgfortran not found)

2019-06-25 03:54发布

我使用Ubuntu 10.04,并试图编译使用gfortran一些代码。 在某些时候做的Makefile:

-L. -lgfortran 

我得到的错误

/usr/bin/ld: cannot find -lgfortran

虽然它被安装:

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

我怎样才能解决这个问题?

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

Answer 1:

万一贵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++是相同的版本为你gfortran路径libgfortran.a将已经存在于库搜索路径(因为这两个C / C ++和Fortran静态库驻留在同一个地方)。 如果两种编译器在他们的版本不同,虽然它不会出现。

例如在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



Answer 2:

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



Answer 3:

只要确保你:

gcc --version

gfortan --version

是一样的。

/usr/bin/ 

包含不同的版本。

例如:如果gcc--version returns 4.7.3gfortran --version 4.8 ,一个简单的黑客可能是做到以下几点。

sudo cp /usr/bin/gcc-4.8 /usr/bin/gcc

它应该工作。



Answer 4:

我有同样的问题,并试图下面的命令。 使用这个问题解决了:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so



文章来源: lgfortran not found