라이브러리를 컴파일했고 이제 실행해야 합니다 . 그러나 라이브러리 나 다른 시스템 파일을 ldconfig
수정하지 않을 것입니다 . /etc/ld.so.conf
다른 곳에서 캐시를 생성한 다음 선택한 프로그램을 컴파일할 때만 표시되도록 할 수 있습니까? 아니면 LD_LIBRARY_PATH
이 목적을 위해 수동으로 설정해야 합니까?LD_RUN_PATH
답변1
다음 -f
옵션 을 확인할 수 있습니다.LD 구성:
-f 컨퍼런스
/etc/ld.so.conf 대신 conf를 사용하십시오.
실행하는 경우:
ldconfig -f custom.conf
사용자에게 충분한 권한이 있으면 수정합니다.read /etc/ld.so.cache
, 다른 파일에서 읽을 수는 없다고 생각합니다 ld
./etc/ld.so.cache
시스템 파일을 수정하고 싶지 않으므로 다음을 수행할 수 있습니다.
gcc -W -Wall -L/path_to_your_library -lyour_library test.c -o testo
testo.c를 구축하세요
그 다음에:
export LD_LIBRARY_PATH=/path_to_your_library
디버깅 도움말을 설정 LD_LIBRARY_PATH
하고 최신 버전의 라이브러리를 실행해 보았음에도 불구하고 일반적인 개발 환경 설정 및 배포에서의 사용은 좋지 않은 것으로 간주됩니다. 더 많이 확인하실 수 있습니다여기.
또 다른 접근 방식을 사용할 수 있습니다 rpath
.
unset LD_LIBRARY_PATH
gcc -L/path_to_your_library -Wl,-rpath=/path_to_your_library -W -Wall -o testo testo.c -lyour_library
방법을 rpath
사용하면 각 프로그램이 공유 라이브러리 위치를 독립적으로 나열할 수 있습니다. 단점: 공유 라이브러리는 고정된 위치에 설치되어야 합니다. 또한 테스트해 보지는 않았지만 라이브러리가 NFS 마운트를 참조하는 경우 문제가 될 수 있습니다.