2014-10-22 5 views
0

HDF-EOS 라이브러리를 Fortran90 프로그램에 연결하는 문제가 있습니다. 소스에서 $ prefix에 지정된 디렉토리로 라이브러리를 컴파일했습니다. 내 간단한 컴파일 명령은 다음과 같습니다gfortran과 HDF-EOS2 라이브러리를 사용하여 프로그램 컴파일

은 컴파일 할 때, 나는 다음과 같은 오류 얻을
gfortran -I$prefix/include -L$prefix/lib -Wl,-rpath -Wl,$prefix/lib -lhdfeos -lGctp -lmfhdf -ldf -lz -lsz -ljpeg tst.f90 

: 내가 변경 안하고있는 프로그램에서

undefined reference to `gdopen_' 

을의 HDF-EOS 라이브러리는 통해 사용됩니다 외부 키워드, 예. 도서관에서

integer(kind=4), external :: gdopen 

, 나노 $ 접두사/lib 디렉토리/libhdfeos.a |

gfortran -fno-underscoring -I$prefix/include -L$prefix/lib -Wl,-rpath -Wl,$prefix/lib -lhdfeos -lGctp -lmfhdf -ldf -lz -lsz -ljpeg tst.f90 

오류는 다음과 같습니다 : 또한

undefined reference to `gdopen' 

00000000000120c0 T gdopen 

을 -fno-강조 컴파일, 난 그냥 다른 오류가 발생합니다 : GREP gdopen 나를 준다 gfortran은 라이브러리를 찾는다. 그렇지 않으면 불평 할 것이다. 오류가 밑줄과 관련이 있습니까? 그 밖의 무엇을 시도 할 수 있습니까? Fedora와 gfortran 버전 4.7.2에서 작업합니다.

답변

1

예, 밑줄로 인해 발생할 가능성이 큽니다.

-fno-underscoring (https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html)으로 컴파일을 시도하십시오. 그러나 bind(C) 인터페이스로 고정하는 것이 좋습니다.

This tutorial (여기에 오기 전에 읽었습니까? 나 같은 라이브러리의 초보자라도 쉽게 찾을 수 있습니다.) 또한 -fno-underscoring을 사용해야한다고 나와 있습니다.

FC=$(HDF4_DIR)/bin/h4fc으로 컴파일하는 것을 포함하여 나머지를 구현하여 계속하십시오.

+0

나는 그 질문에서 나는 그것을 시도했으나 성공하지 못했다고 언급 했어야하는데 그에 따라 나의 질문을 업데이트 할 것이다. – Andre

+0

@Andre BTW, "gfortran이 라이브러리를 찾는다. 그렇지 않으면 불평 할 것이다"는 완전히 거짓입니다. –

+0

@Andre 그 튜토리얼을 읽었습니까? –