RHEL 6.4에서 컴파일된 32비트 애플리케이션에는 공유 개체 파일 libfault.so가 있습니다. 애플리케이션을 시작할 때 이 파일을 미리 로드하고 싶습니다. 나는 그것을 /usr/local/lib/ 디렉토리에 두었습니다.
하지만 응용 프로그램을 시작하는 동안 다음 오류가 발생합니다.
ERROR: ld.so: object 'libfault.so' from LD_PRELOAD cannot be preloaded: ignored.
그러나 libfault.so를 64비트로 컴파일하고 /usr/local/lib64/에 배치하면 오류가 발생하지 않습니다. 하지만 내 응용 프로그램이 32비트용으로 컴파일되었기 때문에 파일이 예상한 기능을 수행하지 않습니다.
답변1
로드할 라이브러리를 찾을 때 환경 변수를 사용하여 $LD_LIBRARY_PATH
동적 로더의 검색 경로를 재정의 할 수 있습니다.
단일 애플리케이션에 대해 이 작업을 일시적으로 수행하려면 다음과 같이 호출할 수 있습니다.
$ LD_LIBRARY_PATH=/usr/local/lib <your executable here>
이 변수를 내보내면 셸 인스턴스를 보다 영구적으로 변경할 수 있습니다.
$ export LD_LIBRARY_PATH=/usr/local/lib
32비트 .so
저장소 위치를 수용할 수 있도록 필요에 따라 위 경로를 조정합니다.