실행 파일을 동적 라이브러리와 강제로 연결하는 방법

실행 파일을 동적 라이브러리와 강제로 연결하는 방법

이 컴파일된 실행 파일이 있습니다.

./run.x

다른 컴퓨터로 옮겼지만 동적 종속성이 충족되지 않습니다.

ldd ./run.x
        libx.1.so => not found

그러나 두 번째 시스템에는 동일한 라이브러리의 최신 버전이 있습니다(그러나 Linux 커널과 기타 리소스는 동일합니다). 내 질문은: 다른 공유 개체를 강제로 연결하는 것이 가능합니까?

ldd ./run.x
        libx.1.so => libx.2.so

심볼릭 링크를 만들 필요도 없고 libx.1.so => libx2.so전체 애플리케이션을 다시 컴파일할 필요도 없습니다(이렇게 하지 않을 충분한 이유가 있습니다).

답변1

할 수 있다하지만 바이너리에서 링크 이름을 패치하는 것은 좋은 생각이 아닙니다. 라이브러리의 버전(기술적으로는 해당 이름)이 변경되면 이는 이전 버전과 호환되지 않는 방식으로 변경되었음을 의미하므로 실행 파일이 새 라이브러리에서 작동한다는 보장이 없습니다.

이 문제를 해결하려면 이전 라이브러리를 복사하거나 실행 파일을 다시 컴파일해야 합니다.

관련 정보