이 컴파일된 실행 파일이 있습니다.
./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
너할 수 있다하지만 바이너리에서 링크 이름을 패치하는 것은 좋은 생각이 아닙니다. 라이브러리의 버전(기술적으로는 해당 이름)이 변경되면 이는 이전 버전과 호환되지 않는 방식으로 변경되었음을 의미하므로 실행 파일이 새 라이브러리에서 작동한다는 보장이 없습니다.
이 문제를 해결하려면 이전 라이브러리를 복사하거나 실행 파일을 다시 컴파일해야 합니다.