64비트 RHEL에서 32비트 컴파일된 공유 객체(.so) 파일을 사용하는 방법은 무엇입니까?

64비트 RHEL에서 32비트 컴파일된 공유 객체(.so) 파일을 사용하는 방법은 무엇입니까?

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저장소 위치를 수용할 수 있도록 필요에 따라 위 경로를 조정합니다.

관련 정보