![/usr/local/lib에서 공유 라이브러리 사용](https://linux55.com/image/29833/%2Fusr%2Flocal%2Flib%EC%97%90%EC%84%9C%20%EA%B3%B5%EC%9C%A0%20%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%20%EC%82%AC%EC%9A%A9.png)
소스에서 일부 라이브러리를 만들었고 그 이후의 파일은 다음 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/lib
ldconfig에서 사용하는 라이브러리 경로에 없을 수 있습니다. 다음을 수행할 수 있습니다.
ldconfig /usr/local/lib
이러한 것들은 링커 캐시에 추가되어야 하지만 경로를 올바르게 추가하는 것이 더 좋습니다. 디렉토리 가 있는지 확인하십시오 /etc/ld.so.conf.d
. 그렇다면 파일을 추가하고("usr-local.conf" 등의 이름을 지정) 그 안에 한 줄을 추가합니다.
/usr/local/lib
지금 실행하세요 ldconfig
. ld.so.conf.d 디렉토리가 없으면 하나 있어야 합니다./etc/ld.so.conf
문서이 줄을 끝에 추가할 수 있습니다.