/usr/local/lib에서 공유 라이브러리 사용

/usr/local/lib에서 공유 라이브러리 사용

소스에서 일부 라이브러리를 만들었고 그 이후의 파일은 다음 make install위치에 있습니다./usr/local/lib

예를 들어 내 경우에는 내 파일이 이 libodb-2.2.so디렉터리에 있습니다.

그러나 에 링크된 실행 파일을 실행하면 libodb다음 오류가 발생합니다. 공유 라이브러리를 로드하는 중 오류가 발생했습니다.libodb-2.2.so: cannont open shared object file: No such file or directory.

이것은 실행 파일을 올바르게 빌드하지 않는다는 의미입니까? 아니면 해당 폴더에도 /usr/local/lib흥미로운 라이브러리가 있을 수 있음 을 시스템에 알려야 합니까?

저는 Ubuntu 12.04, Linux 커널 3.2.0-38-generic을 사용하고 있습니다.

답변1

현재 세션에서는 다음을 수행할 수 있습니다.

LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib 내보내기

또는 변경 사항을 영구적으로 적용하려면 /usr/local/lib( /etc/ld.so.conf또는 포함된 내용)을 추가하고 ldconfig루트로 실행할 수 있습니다.

여전히 문제가 있는 경우 실행하면 ldd [executable name]찾으려고 하는 라이브러리와 찾을 수 없는 라이브러리가 표시됩니다.

답변2

ldconfig이미 라이브러리 구축 후 실행 중이라면 계속해서 읽어보시기 바랍니다. 그렇지 않다면,ldconfig에 대해 읽어보세요.첫 번째.

/usr/local/libldconfig에서 사용하는 라이브러리 경로에 없을 수 있습니다. 다음을 수행할 수 있습니다.

ldconfig /usr/local/lib

이러한 것들은 링커 캐시에 추가되어야 하지만 경로를 올바르게 추가하는 것이 더 좋습니다. 디렉토리 가 있는지 확인하십시오 /etc/ld.so.conf.d. 그렇다면 파일을 추가하고("usr-local.conf" 등의 이름을 지정) 그 안에 한 줄을 추가합니다.

/usr/local/lib

지금 실행하세요 ldconfig. ld.so.conf.d 디렉토리가 없으면 하나 있어야 합니다./etc/ld.so.conf 문서이 줄을 끝에 추가할 수 있습니다.

관련 정보