시스템 파일을 건드리지 않고 "ldconfig"를 사용하세요

시스템 파일을 건드리지 않고 "ldconfig"를 사용하세요

라이브러리를 컴파일했고 이제 실행해야 합니다 . 그러나 라이브러리 나 다른 시스템 파일을 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 마운트를 참조하는 경우 문제가 될 수 있습니다.

관련 정보