2012-02-23 2 views
0

그래서 GotoBLAS2를 WIEN2k에서 사용하기 위해 빌드하고, make를 사용한 후에 GotoBLAS 빌드가 완료되었음을 알았습니다. 물론 make가보고 한 오류도 없습니다. 파일의 빠른 검사를 해보면 모두 libgoto2_prescottp-r1.13.a 및 libgoto2_prescottp-r1.13.so /연구/GotoBLAS2 디렉토리에 포함되어 있습니다. 그러나, 작은 테스트 프로그램을 사용하는 것은 내 작품을 다시 한 번 확인하고, 나는 다음과 같은 문제가 발생할 :공유 라이브러리에 대한 링크에 어떤 문제가 있습니까?

[email protected]:~/Research/Sr2YRuO6-110914$ gfortran Fit-4.2K-0T-110803test.f -L../GotoBLAS2 -lgoto2_prescottp-r1.13 -o Fit-4.2K-0T-110803test.x 
[email protected]:~/Research/Sr2YRuO6-110914$ ./Fit-4.2K-0T-110803test.x 
./Fit-4.2K-0T-110803test.x: error while loading shared libraries: libgoto2_prescottp-r1.13.so: cannot open shared object file: No such file or directory 

내가 지금까지 내가 전화를 말할 수있는 공유 라이브러리를 링크와 나는 상당히 익숙임을 인정하지만 것을 나는 사용 된 것이 적절했다. 누구나 이걸 가지고 도울 수 있니? 감사!

+0

내 대답으로 문제가 해결되면 답변을 '수락하십시오'. 그렇지 않다면 문제의 현재 상태가 무엇인지 알려주십시오. 도움을 요청할 것입니다. – acm

답변

1

문제점은 링크시에 -L 플래그를 사용하여 공유 라이브러리를 찾을 위치를 알려주는 동안 런타임에 종속 라이브러리를 찾을 수있는 정보를 로더에 제공하지 않은 것입니다. 따라서 실행 파일을 실행하려고하면 라이브러리를 찾지 못합니다.

당신은 당신이 어떤 OS를 실행하고 있는지 말해주지는 않지만, 당신의 명령에 따라 리눅스 나 다른 유닉스 계열의 것을 추측 할 것입니다. 이 경우 환경에서 LD_LIBRARY_PATH (linux의 경우 man ld-linux.so 또는 런타임 링커의 이름이 무엇이든) 값을 내보낼 수도 있고 링크 타임에 실행 파일에 DT_RUNPATH 항목을 설정하여 라이브러리를 기록 할 수도 있습니다 검색 할 경로 (맨 위 또는 링커가 시스템에있는 경로).

+0

응답 해 주셔서 다시 한 번 감사드립니다. 내 연구실의 일부 컴퓨터에서 일부 소프트웨어를 설정 중이며 상담원이 모르는 사이에 다른 컴퓨터에서 LD_LIBRARY_PATH의 값을 내 보냈기 때문에 지침에 따라이 문제가 해결되지 않았습니다. 그러나 적절한 라이브러리 경로를 추가하면 문제가 즉시 해결됩니다. – HowNowBrownSprow

관련 문제