2017-11-06 20 views
0

인텔 포트란에서 Lapack 라이브러리를 사용하여 한 대의 PC에 코드 사본을 컴파일했습니다. 그런 다음 다른 PC (Lapack이 설치되지 않은 동일한 OS)에서 실행했습니다. 실패했습니다.포트란 코드를 정적으로 컴파일하는 방법

다른 PC에 Lapack을 설치하면이 문제를 해결할 수 있습니다. 다른 라이브러리를 사용할 때도 같은 문제가 발생합니다. 이것은 역동적 인 컴파일 문제처럼 보입니다 (확실하지 않습니다). 내 질문은 모든 컴퓨터에서 실행할 수있는 실제 실행 파일을 얻는 방법입니까?

+1

설명서를보고 "정적"이라는 단어를 찾았습니까? '정적'플래그를 사용해 보셨습니까? 문제가 발생 했습니까? 어떤 컴파일러에도 있습니까? 컴파일러에 따라 다릅니다. –

+0

ifort를 사용합니다. "-static"을 추가하면 "ld : -lm을 찾을 수 없습니다. , ld : -lc를 찾을 수 없으며 ld : -ldl을 찾을 수 없으며 ld : -lc를 찾을 수 없습니다"라는 메시지가 표시됩니다. 그게 무슨 뜻이야? –

답변

0

나는 아주 명확한 대답을 얻습니다. 질문에 대한 직접적인 대답은 (@ Vladimir F가 & @Ross를 언급 한 것처럼) gfortran과 ifort 모두에 "-static"옵션을 사용하는 것입니다.

어떤 경우에는 문제가 발생했습니다.

정적 컴파일 및 동적 컴파일을위한 libs가 다릅니다. 예를 들어, 우리는 이미 "LIBNAME"이라는 lib를 설치했을 것입니다. 그러나 "-static"옵션 버전에는 "LIBNAME-static"과 비슷한 lib가 필요할 수 있습니다. 다음과 같은 경고에 따르면 :

/usr/bin/ld: cannot find -lLIBNAME 

우리가 설치해야하는 것은 libLIBNAME입니다. 우리는

sudo dnf install libLIBNAME. 

그리고

sudo dnf install libLIBNAME-static 

도 필요 할 수있다하여 (예를 들어 페도라)를 설치할 수 있습니다. 그냥 시도해보십시오.

+0

이 답변은 유용하지 않습니다. "정적으로 컴파일하려면 '-static' 플래그를 사용하십시오. 다른 문제는 의견을 전달할 때만 언급되었습니다. – Ross