2012-06-04 6 views
8

저는 우분투 10.04를 사용 중이며 gfortran을 사용하는 코드를 컴파일하려고합니다. 어떤 시점에서 메이크 수행합니다lgfortran을 찾을 수 없습니다.

-L. -lgfortran 

과가 설치되어 있지만 나는 오류를

/usr/bin/ld: cannot find -lgfortran 

를 얻을 :

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

내가 그것을 어떻게 해결할 수 있습니까?

P.S 다음 메이크 :

## 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 
+1

당신이 오류를 생산하는 최소한의 메이크 파일을 제공 할 수있다 :이 문제는 사용하여이 해결되었다? 당신의 셸 환경이 좋으므로 반드시 그 잘못이되어야합니다. –

+0

완료되었습니다. 질문이 해당 정보로 업데이트되었습니다. – flow

답변

12

않습니다 gfortran 버전이 g++의 버전과 다를 혹시? 아니면 다른 위치에 설치되었을 수도 있습니다.

name은 라이브러리 검색 경로에서 libname.a이라는 라이브러리 파일을 링커가 검색하도록 지시합니다 발견 된 경우 -[B]static 옵션으로 정적 링크가 적용되지 않으면 링커는 libname.so에 대해 다시 한 번 검색하여 링크를 찾습니다 (발견되는 경우). libname.a을 찾지 못하면 libname.so에도 불구하고 오류가 발생합니다.

gfortran 어딘가에 libgfortran.a이 있어야합니다. find으로 검색하고 g++의 경로를 -L/path/to/compiler/libs으로 입력하십시오. g++gfortran과 동일한 버전 인 경우 libgfortran.a 경로는 C/C++ 및 Fortran 정적 라이브러리가 같은 위치에 있으므로 라이브러리 검색 경로에 이미 존재합니다. 두 버전의 컴파일러가 버전이 다른 경우에는 존재하지 않습니다. 공유 libgfortran.so.*/usr/lib64에있는 동안 /usr/lib/gcc/x86_64-redhat-linux/<GCC version>/에 위치한 64 비트 레드햇 기반 시스템에 libgfortran.a

.

대체 솔루션은 -lgfortran/usr/lib/libgfortran.so.3으로 대체하는 것입니다.

-L. 옵션은 -lgfortran보다 다소 -lCGAL과 관련이 있습니다.

4

오늘 ATLAS 컴파일시 동일한 문제가 발생하여 libgfortran.so.3에서까지의 심볼릭 링크를 사용하여 문제를 해결할 수있었습니다.

gcc --version 

그리고

gfortan --version 

이 동일 :

+0

좋아요,이 기능은 저에게는 효과적 이었지만 왜 작동 했습니까? 또한'ld.so.conf.d /'에 링크를 생성하는 것이 가능했을까요? – Seanny123

3

은 그냥 있는지 확인하십시오.

/usr/bin/ 

다른 버전이 들어 있습니다.

예 : gcc--version returns 4.7.3gfortran --version 4.8 인 경우 간단한 해킹으로 다음을 수행 할 수 있습니다.

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

그래야합니다.

+0

내 시스템에서/etc/alternatives/gcc를 가리키고 있는데, gcc의 적절한 버전을 선택하기 위해'alternatives --config gcc' 명령을 사용했습니다 – Jijo

2

동일한 문제점이있어서 다음 명령을 시도했습니다.

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

+0

그리고 문제를 해결했거나 시도했을 때 어떤 일이 있었습니까? –

관련 문제